在学习Haskell的过程中,我读到了代数数据类型,总和类型和产品类型。虽然产品类型与笛卡尔产品类似,而“产品”对我来说很有意义,但我不明白为什么总和类型(又名变种类型,也就是标记联盟,也称为歧视联盟,又称不相交联盟)被称为 sum 类型。
维基百科说:
和类型对应于直觉逻辑分离 库里 - 霍华德的通信。
好的,我明白了:在布尔代数中,Disjunction类似于OR,这类似于sums,因为
OR | | +
-----------
0 0 | 0 | 0
0 1 | 1 | 1
1 0 | 1 | 1
1 1 | 1 | 0 (mismatch here)
但由于1 + 1,它并不合适。
我找到了关于什么产品和总和类型的各种解释,我想我明白了。总和类型是 OR 的另一件事。
但为什么它被称为sum类型?仅仅因为对于OR运算符使用符号+是一种惯例?或者因为“Sum类型是产品类型的双重性”。
(同样,除非我错过了一些大的东西,请不要解释总和/产品类型。我想我得到了概念。我只想知道为什么它被称为 sum 类型。)< / p>
答案 0 :(得分:4)
它被称为和类型,因为A + B
的值是A
和B
的值的总和