 categoryextras0.53.6: Various modules and constructs inspired by category theory  Contents  Index 

Control.Functor.Composition  Portability  nonportable (classassociated types)  Stability  experimental  Maintainer  Edward Kmett <ekmett@gmail.com> 



Description 
Generalized functor composition.
Since we have many reasons for which you might want to compose a functor, and many
expected results. i.e. monads via adjunctions, monads via composition with a pointed
endofunctor, etc. we have to make multiple composition operators.


Synopsis 



Documentation 

newtype CompF f g a 
Basic functor composition
 Constructors   Instances  


class Composition o where 
 Methods  decompose :: (f `o` g) x > f (g x)   compose :: f (g x) > (f `o` g) x 
  Instances  


associateComposition :: (Functor f, Composition o) => ((f `o` g) `o` h) :~> (f `o` (g `o` h)) 
The only reason the compositions are all the same is for type inference. This can be liberalized.


coassociateComposition :: (Functor f, Composition o) => (f `o` (g `o` h)) :~> ((f `o` g) `o` h) 

type :.: = CompF 
An infix alias for functor composition


preTransform :: Composition o => (f :~> g) > (f `o` k) :~> (g `o` k) 

postTransform :: (Functor k, Composition o) => (f :~> g) > (k `o` f) :~> (k `o` g) 

data Comp p f g a b 
Bifunctor composition
 Instances  (Bifunctor p Hask Hask Hask, Symmetric Hask f, Symmetric Hask g) => Symmetric Hask (Comp p f g)  (Bifunctor p Hask Hask Hask, Braided Hask f, Braided Hask g) => Braided Hask (Comp p f g)  (Bifunctor p c d Hask, QFunctor f b c, QFunctor g b d) => QFunctor (Comp p f g) b Hask  (Bifunctor p c d Hask, PFunctor f a c, PFunctor g a d) => PFunctor (Comp p f g) a Hask  (Bifunctor p c d Hask, Bifunctor f a b c, Bifunctor g a b d) => Bifunctor (Comp p f g) a b Hask  (Bifunctor p Hask Hask Hask, Bifunctor f Hask Hask Hask, Bifunctor g Hask Hask Hask) => Functor (Comp p f g a) 



type :++: = Comp Either 
Bifunctor coproduct


type :**: = Comp (,) 
Bifunctor product


liftComp :: Bifunctor p r s Hask => r (f a b) (f c d) > s (g a b) (g c d) > Comp p f g a b > Comp p f g c d 

Produced by Haddock version 2.1.0 