
Christian Maeder
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"
One way to do it, is to add _ -> error "This can never happen" I do this occasionally, and it catches some errors or mistaken assumptions on my part every now and then. (Perhaps one could even have a special funcition, "impossible", say, that would tell the compiler that a particular branch would never be taken. In case the compiler is smart enough to figure it out, and issue a warning for it -- it would know not to bother.) Or one might wish for some kind of pragma to turn off this warning selectively for a block of code. -kzm -- If I haven't seen further, it is by standing in the footprints of giants