Can I disable the non-exhaustive pattern matches warning only for lambdas?
I like the warning in general, but not for actual lambda literals like this:
map (\(x:xs)->...) ls
I think this code makes it pretty clear that I expect all the values of ls
to always have at least one element, and there is no neat way to handle the error case in the lambda. (I guess I could move the pattern match into a case
statement, but that would just be ugly.)
You could write
{-# LANGUAGE LambdaCase #-}
map (\case (x:xs)->...; [] -> error "wut") ls
In "wut" you could then describe why that should not have happened.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With