data A = True' | False' deriving Show data B = True' foo :: A -> Integer foo True' = 1 foo False' = 0 data P3 = P Bool A -- P (Bool x A) data BigP = P1 Bool A | P2 Integer deriving Show bar :: BigP -> Integer bar (P1 _ _) = 1 bar (P2 _) = 2 main = putStrLn "Hello world"