data Prop = Const Bool
| Var Char
| Not Prop
| And Prop Prop
| Imply Prop Prop
我正在实现上述数据构造函数,并进行了少量添加,data Prop = Const Bool
| Var Char
| Not Prop
| Or Prop Prop
| And Prop Prop
| Imply Prop Prop
当我尝试在下面创建另一个使用先前定义的构造函数的数据构造函数时,data Formula = Const Bool
| Var Prop
| Not Formula
| And Formula Formula
| Or Formula Formula
| Imply Formula Formula
我收到此错误:“'Const'的多个声明”
Not
出现同样的错误。 , And
, Imply
, 和 Or
.为什么 Haskell 不允许这样做?
最佳答案
Haskell 不允许这样做,因为它会模棱两可。值构造函数 Prop
实际上是一个函数,如果你向 GHCi 询问它的类型可能会更清楚:
> :t Const
Const :: Bool -> Prop
如果您尝试再添加一个 Const
在同一模块中的构造函数,您将有两个名为 Const
的“函数”在同一个模块中。你不能这样。
关于haskell - 为什么 Haskell 不允许两个数据构造函数共享 "Const"和其他定义的数据属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64708767/