Я изучаю алгебраические DT в Haskell. Что я хотел бы сделать, так это создать новый 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