为什么和类型称为和类型?

时间:2017-11-14 16:51:29

标签: algebraic-data-types discriminated-union

在学习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>

1 个答案:

答案 0 :(得分:4)

它被称为和类型,因为A + BAB的值的总和