
On Wed, Jun 10, 2015 at 1:46 PM, Roman Cheplyaka
On 10/06/15 14:22, Johan Tibell wrote:
On Wed, Jun 10, 2015 at 12:42 AM, David Luposchainsky
mailto:dluposchainsky@googlemail.com> wrote: I think there are two important consequences of MonadFail. First of all, we can all safely write failable patterns if we so desire. Second, the compiler can ensure other people's codebases do not lie to us (knowingly or unknowingly).
The second is a bit overstated I think. Any function you call can still have partial pattern matches in all the other places Haskell allows them and you wouldn't know from the type.
For most of them, at least you get a warning from GHC (not for patterns inside lambda, sadly, although that should be fixable). But for
do Just x <- a ...
it's not possible in principle to give a warning, because it's not clear whether the implicit call to fail is intended.
That's a good point. An alternative to changing fail would to add a warning for partial matches even in do-notation.