Haskell“ newtype”用于类型同义词
|
我正在用SAT做一些事情,我想同时拥有\“ and \”和\“ or \”子句。
type AndClause = [Literal]
type OrClause = [Literal]
但是使用它们时我遇到了问题:
instance Satisfiable AndClause where ...
instance Satisfiable OrClause where ...
给我“重复的实例声明。”它们是类型,而不是数据或类型构造函数,因此我认为我无法使用newtype来完成所需的操作。有什么解决办法吗?
没有找到相关结果
已邀请:
1 个回复
篮肥炼皖
是
的同义词,而
是
的同义词,则根据传递性质,
和
是互为同义词。因此,编译器没有理由在它们之间进行区分(因此,不能有多态性)。 您真正想要的是两种行为不同的不同类型,对于它们,
就可以了:
但是,一个更好的主意可能是使其成为代数数据类型:
(请注意,我是在编译器中键入此字符,但基本上应该是正确的)。