#5627: Proposal: Add Applicative instances for the remaining monads in base ---------------------------------+------------------------------------------ Reporter: basvandijk | Owner: Type: feature request | Status: new Priority: normal | Component: libraries/base Version: 7.2.1 | Keywords: Testcase: | Blockedby: Os: Unknown/Multiple | Blocking: Architecture: Unknown/Multiple | Failure: None/Unknown ---------------------------------+------------------------------------------ The only public monads in `base` that don't have `Applicative` instances yet are: `ReadP`, `ReadPrec` and `ArrowMonad`. Because of the rule of least surprise I would like to propose adding `Applicative` instances for these monads.
== Proposal == Concretely I would like to propose adding the following to `Control.Applicative`: {{{ instance Applicative ReadP where pure = return (<*>) = ap instance Alternative ReadP where empty = mzero (<|>) = mplus instance Applicative ReadPrec where pure = return (<*>) = ap instance Alternative ReadPrec where empty = mzero (<|>) = mplus instance Arrow a => Applicative (ArrowMonad a) where pure x = ArrowMonad (arr (const x)) ArrowMonad f <*> ArrowMonad x = ArrowMonad (f &&& x >>> arr (uncurry id)) instance ArrowPlus a => Alternative (ArrowMonad a) where empty = ArrowMonad zeroArrow ArrowMonad x <|> ArrowMonad y = ArrowMonad (x <+> y) }}} And adding the following to `Control.Arrow`: {{{ instance Arrow a => Functor (ArrowMonad a) where fmap f (ArrowMonad m) = ArrowMonad $ m >>> arr f instance (ArrowApply a, ArrowPlus a) => MonadPlus (ArrowMonad a) where mzero = ArrowMonad zeroArrow ArrowMonad x `mplus` ArrowMonad y = ArrowMonad (x <+> y) }}} == Discussion deadline == I don't think this is a controversial proposal and so I don't expect objections. Can we bend the rules a bit and shorten the discussion period so this can be integrated into the base library that comes with the upcoming `ghc-7.4`? -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5627> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler _______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs