[GHC] #11128: New `-fwarn-noncanonical-monad-instances` warning

GHC ghc-devs at haskell.org
Tue Nov 24 07:53:18 UTC 2015


#11128: New `-fwarn-noncanonical-monad-instances` warning
-------------------------------------+-------------------------------------
        Reporter:  hvr               |                Owner:  hvr
            Type:  feature request   |               Status:  patch
        Priority:  normal            |            Milestone:  8.0.1
       Component:  Compiler          |              Version:  7.10.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D1516
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by hvr):

 Replying to [comment:2 nomeata]:
 > Do you intentionally disallow `return x = pure x`, which some people
 might write? (No strong opinion here, having precisely one official way is
 probably desirable, but let’s at least document that it has been given
 thought.)

 Yes, that was quite intentional, and there are a couple of reasons
 actually:

  - I found only *one* single `return a = pure a` on Hackage when I grepped
 for `rgrep 'return  *[a-z] *= *pure  *[a-z]'`; this is maybe because any
 instructions I saw for making code AMP-proof used rather pointsfree
 equational style e.g. (`return = pure`), and the Haddock documentation in
 `base` uses that style too

  - the warning is easier to document, implement, and less corner-cases to
 worry about

  - "canonical" somewhat implies we want a single unique form here, this
 also has the benefit of being able to have a simpler regexp to find all
 `return *= *pure` patterns in your codebase (e.g. if you want to drop
 those when base<4.8 compat doesn't matter anymore)

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


More information about the ghc-tickets mailing list