私はhaskellの代数的DTについて学んでいます。私がしたいことは、既存のものを「拡張」するような新しいADTを作成することです。私は、私が好きなものを表現する方法を見つけることができない、誰かが代替パターンを甘受することができるか、解決策を甘くすることができる。私はそれらを別々のタイプにしたいが、ばかばかしいソリューションのように縫い目だけをコピーして貼り付ける。以下のコードは、私が探しているものを最もよく表しています。ハスケルの代数的データ型: "pseudo-extend"
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)
編集:私は
let a = Abkhazia :: Country
なく
let a = Power Abkhazia :: Country
これをやりたい理由は、通常、OO-yの考え方から来ていますが、電源を保有するPowerCountryのコンストラクタをCountry内に追加することはいつでも可能です。 –
うーん、アブハジアとトランスナストリアがハスケルのコードにどうやって来るのか聞いてもいいですか?あなたはその2つの場所とどのように関係していますか?あなたは何らかのゲームに取り組んでいますか?どこから来ましたか? –
AbkhaziaとTransnistriaはhttp://en.wikipedia.org/wiki/List_of_sovereign_statesの「その他の州」のリストの最初と最後です 私はちょうどハスケルを学んでいて、練習することを考え出しました。私はそれがゲームになるかもしれないと思うが、私はまだ意図はない。 –