我已经开始了这个新问题,因为它是我之前问题的后续问题。
如果我有两种由相似构造函数组成的数据类型:
data A = X | Y | Z
data B = X | Y
有没有办法我可以以某种方式将其表示为:
data A = C | Z
data B = C
data C = X | Y
如果你能看到我在做什么 - 我正在尝试将 X | 分组 Y 转换为一种数据类型,然后可以被多种其他数据类型使用。我似乎无法让编译器允许这样做,或者如果允许,我无法与 X 或 Y 进行模式匹配,只能与 C??
我收到 C 已被多次声明的错误消息。
我想我也许可以使用类型,但它们不允许多种类型。
编辑
即使我声明了很长的路(如下所示),它仍然不会编译并说 X 和 Y 有多个声明:
data A = X | Y | Z
data B = X | Y