data T = A { foo :: Int }
| B { bar :: String }
Fallunterscheidung:
f :: T -> Int
f x = case x of
A {} -> foo x
B {} -> length $ bar x
Pattern Matching (Bezeichner f, b werden lokal gebunden):
f :: T -> Int
f x = case x of
A { foo = f } -> f
B { bar = b } -> length b