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

Edward Kmett ekmett at
Mon Jun 29 09:10:12 EDT 2009

Either way there is an asymmetry when Functor is involved, putting it in
Control would break up the cluster of:

import Data.Functor
import Data.Foldable
import Data.Traversable

So, I can't see it mattering too much which color the bikeshed is painted,
but if the community decides that Control.Functor is the place this should
go I'll happily move the Control.Functor module in category-extras to
another name.

-Edward Kmett
On Mon, Jun 29, 2009 at 9:03 AM, Johan Tibell <johan.tibell at>wrote:

> Hi,
> On Mon, Jun 29, 2009 at 2:45 PM, Ross Paterson <ross at>wrote:
>> 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.
> Could we come up with some policy on what goes in Control.* versus Data.*?
> As we add more and more modules that fits in both categories it's becoming
> increasingly hard to remember what lives where. Using both Data and Control
> gives import lists an ugly asymmetry:
> import Control.Applicative
> import Data.Functor
> import Control.Monad
> Cheers,
> Johan
> _______________________________________________
> Libraries mailing list
> Libraries at
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Libraries mailing list