@@ -210,10 +210,11 @@ Both of those tell us the "real" desugaring as just another pattern we could rec
(>>=) = <...bind impl...>
-- NB: `return` defaults to `pure` since GHC 7.10
-- Monad(fail) will be removed in GHC 8.8+
-- Monad(fail) will be removed in GHC 8.8+;
-- GHC may or may not ignore a definition in terms of MonadFail(fail) (decision pending)
fail = Fail.fail
instance MonadFail Foo where
instance Fail.MonadFail Foo where
fail = <...fail implementation...>
```
1. Change your pattern to be irrefutable
...
...
@@ -221,17 +222,17 @@ Both of those tell us the "real" desugaring as just another pattern we could rec
```
do Left e <- foobar
stuff
stuff
```
becomes
```
do x <- foobar
e <- case x of
e <- case x of
Left e' -> e'
Right r -> error "Pattern match failed" -- Boooo
stuff
stuff
```
The point is you'll have to do your dirty laundry yourself now if you have a value that *you* know will always match, and if you don't handle the other patterns you'll get incompleteness warnings, and the compiler won't silently eat those for you.