haskell で代数 DT について学んでいます。私がやりたいのは、既存のものを「拡張」する新しい 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