我正在学习 Haskell 中的代数 DT。我想做的是创建一个新的 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