proposal #3335: make some Applicative functions into methods, and split off Data.Functor

Ross Paterson ross at
Mon Jun 29 08:45:45 EDT 2009

The proposal is that the following functions
    (<$) :: Functor f => a -> f b -> f a 
    (*>) :: Applicative f => f a -> f b -> f b 
    (<*) :: Applicative f => f a -> f b -> f a 
    some :: Alternative f => f a -> f [a]
    many :: Alternative f => f a -> f [a]
are moved into the corresponding classes, with the existing implementations
as default definitions.  This gives people creating instances the option of
defining specialized implementations of these functions, though they should
be equivalent to the default definitions.
Although (<$) is now a method of the Functor class, it is hidden in the
re-export by the Prelude, Control.Monad and Monad.  The new module
Data.Functor exposes the full class, plus the function (<$>).  These are
also re-exported by Control.Applicative.

Deadline: 20th July 2009.

More information about the Libraries mailing list