为什么在这个不相交的联合中这里1和2

时间:2019-05-25 14:25:03

标签: haskell

我研究了Haskell中Either的用法,

这是我们课程中的一个示例,但我不明白为什么要使用1和2而不是每个集合中的每个元素。

the image of problem

谢谢

1 个答案:

答案 0 :(得分:5)

不相交的并集必须具有某种方法来使两组中的元素保持不同。这是通过 tagging 每个元素完成的,每个元素都有一个数字,表示其来源。因此,在{ a, b }{ a, c, d }的不相交联合中,您可以将其写为{(1, a), (1, b), (2, a), (2, c), (2, d)}(1, a)代表第一组中的a,而{{1 }}代表第二组中的(2, a)

在Haskell中,我们使用数据构造函数构造 sum类型(的值)来表示标记的并集,而a是这些类型的不相交并集Either A BA