[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