data S = S { i::Int, d::Double } data Foo = A Int | B Double | C S foo = A 3; bar = B 3.5 baz = C S{ i = 7, d = 7.5 } prtfoo val = -- pattern match on constructor case val of A a -> print a B b -> print b C (S i d) -> do print i print d data Bar = X Int | Y Int | Z Int; prtbar val = -- pattern match on constructor case val of X x -> print x Y y -> print y Z z -> print z foo2 = X 3; bar2 = Y 4; baz2 = Z 5; main = do prtfoo foo prtfoo bar prtfoo baz prtbar foo2 prtbar bar2 prtbar baz2 -- Local Variables: -- -- compile-command: "ghc test.hs; ./test" -- -- End: --