Re: [GHC] #8004: Applicative/Monad proposal related warnings (AMP phase 1)

#8004: Applicative/Monad proposal related warnings (AMP phase 1)
-------------------------------------+-------------------------------------
Reporter: quchen | Owner: quchen
Type: feature request | Status: closed
Priority: high | Milestone: 7.8.1
Component: Compiler | Version: 7.6.3
Resolution: fixed | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: #4834 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by songzh):
I am so curious that I want to ask for the second case "You have an
instance of Monad, but not Applicative"
why cann't we add default implementation to Applicative typeclass?
{{{
class Functor f => Applicative f where
pure :: a -> f a
default pure :: Monad f => a -> f a
pure = return
(<*>) :: f (a -> b) -> f a -> f b
default (<*>) :: Monad f => f (a -> b) -> f a -> f b
(<*>) f a = ap
}}}
Replying to [comment:14 Austin Seipp
In [changeset:75a9664af1c4e6f87794b49a215adb235b20696d/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="75a9664af1c4e6f87794b49a215adb235b20696d" Implement the AMP warning (#8004)
This patch implements a warning when definitions conflict with the Applicative-Monad Proposal (AMP), described in #8004. Namely, this will cause a warning iff:
* You have an instance of Monad, but not Applicative * You have an instance of MonadPlus, but not Alternative * You locally defined a function named join, <*>, or pure.
In GHC 7.10, these warnings will actually be enforced with superclass constraints through changes in base, so programs will fail to compile then.
This warning is enabled by default. Unfortunately, not all of our upstream libraries have accepted the appropriate patches. So we temporarily fix ./validate by ignoring the AMP warning.
Dan Rosén made an initial implementation of this change, and the remaining work was finished off by David Luposchainsky. I finally made some minor refactorings.
Authored-by: Dan Rosén
Authored-by: David Luposchainsky Signed-off-by: Austin Seipp }}}
-- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8004#comment:23 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC