id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
3335	make some Applicative functions into methods, and split off Data.Functor	ross		"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.

Discussion on libraries@haskell.org to 20th July 2009."	proposal	closed	normal	Not GHC	libraries/base		fixed			Unknown/Multiple	Unknown/Multiple		Unknown				
