+1 from me. A minor nitpick: the proposal should clarify which of the existing instances of Monad from base get a MonadFail instance. My understanding is that none of them would define fail = error, but that has not been made explicit.