为什么和类型称为和类型?
Why are sum types called sum types?
在学习过程中Haskell我阅读了有关代数数据类型、求和类型和乘积类型的内容。虽然乘积类型类似于笛卡尔乘积并且 "product" 对我来说立即有意义,但我不明白为什么求和类型(又名变体类型又名标记联合又名歧视联合又名不相交联合)被称为 sum 种。
维基百科说:
The sum type corresponds to intuitionistic logical disjunction under
the Curry–Howard correspondence.
好的,我明白了:析取类似于布尔代数中的或,这种看起来像求和,因为
OR | | +
-----------
0 0 | 0 | 0
0 1 | 1 | 1
1 0 | 1 | 1
1 1 | 1 | 0 (mismatch here)
但是因为1+1所以不太合适
我找到了关于什么是乘积和总和类型的各种解释,我想我明白了。总和类型是一回事 或 是另一回事。
但为什么它被称为求和类型呢? 只是因为它是一个约定,使用符号 + 作为 OR 运算符?或者因为 "Sum types are the dual of product types."?
(再次强调,除非我遗漏了一些重要的东西,否则请不要解释 sum/product 类型。我想我明白了这个概念。我只想知道为什么它被称为 sum 类型。)
之所以称为求和类型,是因为A + B
的个值个是A
个B
个值的个数之和].
在学习过程中Haskell我阅读了有关代数数据类型、求和类型和乘积类型的内容。虽然乘积类型类似于笛卡尔乘积并且 "product" 对我来说立即有意义,但我不明白为什么求和类型(又名变体类型又名标记联合又名歧视联合又名不相交联合)被称为 sum 种。
维基百科说:
The sum type corresponds to intuitionistic logical disjunction under the Curry–Howard correspondence.
好的,我明白了:析取类似于布尔代数中的或,这种看起来像求和,因为
OR | | +
-----------
0 0 | 0 | 0
0 1 | 1 | 1
1 0 | 1 | 1
1 1 | 1 | 0 (mismatch here)
但是因为1+1所以不太合适
我找到了关于什么是乘积和总和类型的各种解释,我想我明白了。总和类型是一回事 或 是另一回事。
但为什么它被称为求和类型呢? 只是因为它是一个约定,使用符号 + 作为 OR 运算符?或者因为 "Sum types are the dual of product types."?
(再次强调,除非我遗漏了一些重要的东西,否则请不要解释 sum/product 类型。我想我明白了这个概念。我只想知道为什么它被称为 sum 类型。)
之所以称为求和类型,是因为A + B
的个值个是A
个B
个值的个数之和].