Exhaustive Pattern-Matching
Christian Maeder
maeder@tzi.de
Fri, 29 Aug 2003 12:44:27 +0200
>>GHC tries to do so, but sometimes gets it wrong. See the
>>-fwarn-incomplete-patterns flag. We'd appreciate it if
>
> someone could
>
>>overhaul this code - it's been on the wish list for a long time.
Indeed, I always try to avoid all warnings in my sources by using the
flag "-Wall", because I consider this to be good programming style. (In
particular warnings about unused and shadowed variables prevented a lot
of errors.) However some warnings are difficult to avoid. So how
difficult would it be to implement non-exhaustive pattern warnings for
nested patterns?
data Color = Red | Green | Blue
f :: Color -> String
f x = case x of
Red -> "r"
_ -> " " ++ case x of
Green -> "g"
Blue -> "b"
Warning: Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Red
"Red" in the second case is unreachable (and this should also be worth a
warning.)
Christian