-Wall and the fail method

Edward Kmett ekmett at gmail.com
Sat May 23 01:05:28 UTC 2015


It probably doesn't belong in -Wall, as it is a fairly common idiom to use
fail intentionally this way, but it could pretty easily be added to the
'do' and list/monad comprehension desugaring to issue a separate warning
that we don't turn on by default.

Making it possible to see where you use 'fail' explicitly might be a nice
step on the road towards splitting out MonadFail though.

Herbert has been working up a plan we can put forth to the community for
how to proceed on that front. It may make sense to roll any such warnings
into that effort.

-Edward

On Fri, May 22, 2015 at 8:06 PM, Nikita Karetnikov <nikita at karetnikov.org>
wrote:

> Can -Wall be extended to report pattern match failures in do
> expressions, like it does for case expressions?
>
> Prelude> :set -Wall
> Prelude> let f = do Just x <- return Nothing; return x
> Prelude> let g = case Nothing of Just x -> x
>
> <interactive>:9:9: Warning:
>     Pattern match(es) are non-exhaustive
>     In a case alternative: Patterns not matched: Nothing
>
> One can argue that it's similar to undefined, error, and various
> unsafeSomething functions, which I think should be reported as well, if
> possible.  But these things can be found already with a simple grep
> while a pattern match cannot.
>
> I bet it has been discussed already, but "fail" is a terrible search
> term, so I cannot find anything relevant in the archives nor in the bug
> tracker.
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/glasgow-haskell-users/attachments/20150523/3b532274/attachment.html>


More information about the Glasgow-haskell-users mailing list