You need to represent them as a tree:
data Power
= Abkhazia
| Transnistria
deriving (Eq, Show)
data Country
= Powers Power
| Netural
| Water
deriving (Eq, Show)
: : , "". , , Haskell . .
data Power = Abkhazia | Transistria
data Countries = Neutral | Water
, Power, :
class Countrylike a where
landarea :: a -> Int -- and other things country-like entities share
instance Countrylike Power where
landarea Abkhazia = 10
landarea Transistria = 20
instance Countrylike Countries where
landarea Neutral = 50
landarea Water = 0
landarea . , .