Ich lerne gerade über algebraische DTs in Haskell. Was ich tun möchte, ist eine neue ADT zu erstellen, die eine Art von "erweitert" eine bestehende. Ich kann nicht finden, wie man ausdrücken, was ich möchte, kann jemand ein alternatives Muster oder eine Lösung vorschlagen. Ich möchte, dass sie unterschiedliche Typen sind, aber Kopieren und Einfügen scheint nur wie eine dumme Lösung. Der Code unten beschreibt am besten, was ich suche.
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)
Edit: Ich glaube, es bedarf einer kleinen Klarstellung... Ich möchte in der Lage sein, dies zu tun (in ghci)
let a = Abkhazia :: Country
und nicht
let a = Power Abkhazia :: Country