data Bol = Tru | Fal deriving Show



bnot :: Bol -> Bol
bnot x = case x of
  Tru -> Fal
  Fal -> Tru

data Par a = MkPar a a deriving Show

get0 :: Par a -> a
get0 x = case x of
  MkPar a b -> a
  
get1 :: Par a -> a
get1 x = case x of
  MkPar a b -> b

data List a = Nil | Cons a (List a)

evenLen :: List a -> Bool
evenLen x = case x of
  Nil       -> True
  Cons x xs -> not (evenLen xs) 

main :: IO ()
main = print (evenLen (Cons 2 (Cons 1 Nil)))
