The problem is that is more than one way to compose two applicative functors! If one is a pointed functor and the other is a monad, then there are at least 3 different forms of distributive laws that might be used to compose them to obtain a monad (and as a side effect, obtain an applicative) in addition to the closure of applicative functors under composition.
In the TypeCompose package there is the O data type for composing two applicative functors
http://hackage.haskell.org/packages/archive/TypeCompose/0.6.4/doc/html/Control-Compose.html
However I hesitate to import this package because of a lot of needed type extensions. But since 'O' seems to be the canonical way for combining two functors, could we add it to Control.Applicative?
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries