module Data.Print.Info where
data Info = A | B | C | D | E | F | G | H deriving (Eq, Ord)
data InfoFile = Af String | Bf String | Cf String | Df String | Ef String | Ff String | Gf String | Hf String deriving (Eq, Ord)
fromInfoFile :: InfoFile -> String
fromInfoFile (Af xs) = xs
fromInfoFile (Bf xs) = xs
fromInfoFile (Cf xs) = xs
fromInfoFile (Df xs) = xs
fromInfoFile (Ef xs) = xs
fromInfoFile (Ff xs) = xs
fromInfoFile (Gf xs) = xs
fromInfoFile (Hf xs) = xs
data InfoG a b = I1 a | I2 b deriving Eq
type Info2 = InfoG Info InfoFile
isI1 :: InfoG a b -> Bool
isI1 (I1 _) = True
isI1 _ = False
isI2 :: InfoG a b -> Bool
isI2 (I2 _) = True
isI2 _ = False