Can I disable the "non-exhaustive pattern matches" warning only for lambdas?

In the case of map, you could write this as a list comprehension.

[... | (x:xs) <- ls]

This will not produce any warnings. Although, if an empty list does show up, this will simply filter it out rather than throw an exception, which might conceal errors. Going the type safe route as Ingo suggests might be a better option if you're worried about that.


Do you have such situations quite often? This is a code smell IMHO. I'd like to see some such lambdas and I am quite sure we can make a better version that also handles empty lists quite fine. And in all other cases you might go for a NonEmpty list type wrapper.


I would go for {-# OPTIONS_GHC -fno-warn-incomplete-patterns #-} instead of {-# OPTIONS_GHC -fno-warn-incomplete-uni-patterns #-}. And I would recommend using per-file approach instead of putting it into you cabal file as it is generally good practice to keep getting warnings of this kind.


Yes, but only in GHC 7.2 onwards; pass -fno-warn-incomplete-uni-patterns (e.g. in your Cabal file's ghc-options field, or in an {-# OPTIONS_GHC #-} pragma at the top of your file).

However, this will also disable the warning for pattern bindings, so let Just x = Nothing in x won't produce a warning. case statements are unaffected.