我正在学习Haskell中的代数数据类型。我想要做的是创建一个新的ADT来“扩展”现有的ADT。我无法找到合适的表达方式,有没有人能提出另一种模式或者提出解决方案?我希望它们是独特的类型,但是复制和粘贴似乎是一个愚蠢的解决办法。下面的代码最好地描述了我所追求的内容。
data Power =
Abkhazia |
-- A whole bunch of World powers and semi-powers
Transnistria
deriving (Eq, Show)
data Country =
--Everything in Power |
Netural |
Water
deriving (Eq, Show)
编辑:我认为需要有一点澄清……我想在ghci中实现这个功能。
let a = Abkhazia :: Country
而不是
let a = Power Abkhazia :: Country