[GHC] #14960: Invalid law for MonadPlus: v >> mzero = mzero

GHC ghc-devs at haskell.org
Wed Mar 21 23:09:55 UTC 2018


#14960: Invalid law for MonadPlus: v >> mzero = mzero
-------------------------------------+-------------------------------------
           Reporter:  lyxia          |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:                 |           Version:  8.2.2
  libraries/base                     |
           Keywords:  laws, mzero    |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  Documentation
  Unknown/Multiple                   |  bug
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 The documentation of `MonadPlus` states: `v >> mzero = mzero`. This law is
 broken by `IO`, `MaybeT`, and a few other monads with some notion of
 "irreversible effects". I propose to just remove that law.

 https://hackage.haskell.org/package/base-4.11.0.0/docs/Control-
 Monad.html#t:MonadPlus

 Another alternative is to keep it but remove unlawful instances, so
 `MonadPlus` instances can signal that those laws hold, on top of the
 `Alternative` instances. But that breaks backwards compatibility, because
 `MonadPlus` for `IO` and `MaybeT` is already used in many places.

 This thread previously brought up the issue but hasn't been followed up:
 https://mail.haskell.org/pipermail/libraries/2014-January/021993.html,
 continued on
 https://mail.haskell.org/pipermail/libraries/2014-February/022004.html
 with some interesting discussion about what those laws should be.

 This even older thread also discusses `MonadPlus` laws, hence it also
 seems relevant to improve the documentation:
 https://mail.haskell.org/pipermail/haskell-cafe/2005-January/008751.html.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14960>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list