
18 Sep
2013
18 Sep
'13
2:08 p.m.
Hi, I have a question about pattern matching. Consider the following code: ------------------ data Foo = Bar Int | Foo Int f :: Foo -> Bool f (Foo n) | even n = True | odd n = False f (Bar n) | even n = True | odd n = False main = do print $ f $ Bar 1 print $ f $ Bar 2 print $ f $ Foo 1 print $ f $ Foo 2 ------------------ Why is it not possible to simply write for f: f v = case v of _ n | even n -> True _ n | odd n -> False or f (_ n) | even n = True | odd n = False (in both cases we get a parse error)? Thanks, TP