【发布时间】:2018-07-30 15:08:52
【问题描述】:
我是 Haskell 的新手,可能在这里遗漏了一些非常基本的东西,但我无法在不同的数据类型之间重用相同的值构造函数。
data Colour = Red | Pink | Orange | Yellow
data Fruit = Apple | Orange | Banana
这会产生错误提示
Multiple declarations of ‘Orange’
不知道为什么不允许这样做,我在学习 Haskell 之前一直在使用 OCaml,并且能够定义这样的类型
【问题讨论】:
-
请注意
Orange、Pink等不是类型;它们是Color(或Fruit)类型的构造函数。 -
是的,你是对的,很抱歉造成混淆,将其编辑为类型的值构造函数
-
因为 Haskell 的类型联合是 tagged。
-
@WillNess 我不认为这就是原因。原则上,我认为您可以使用类似于
DuplicateRecordFields的方式来执行此操作,但它还没有被编写。
标签: haskell algebraic-data-types user-defined-data-types value-constructor