Control.Functor
 Portability portable Stability experimental Maintainer dan.doel@gmail.com
 Contents Unary functors Composition Basic Instances Unit Const Binary functors Trinary functors
Description
Functor composition, standard functors, and more.
Synopsis
newtype O f g a = Comp {
 deComp :: f (g a)
}
lComp :: Functor f => O f (O g h) a -> O (O f g) h a
rComp :: Functor f => O (O f g) h a -> O f (O g h) a
data Unit a = Unit
data Const t a = Const {
 unConst :: t
}
class Bifunctor f where
 bimap :: (a -> c) -> (b -> d) -> f a b -> f c d
class Trifunctor f where
 trimap :: (a -> a') -> (b -> b') -> (c -> c') -> f a b c -> f a' b' c'
Unary functors
Composition
 newtype O f g a Source

Functor composition.

(Note: Some compilers will let you write f `O` g rather than O f g; we'll be doing so here for readability.)

Functor composition is associative, so f `O` (g `O` h) and (f `O` g) `O` h are equivalent. The functions lComp and rComp convert between the two. (Operationally, they are equivalent to id. Their only purpose is to affect the type system.)

Constructors
Comp
 deComp :: f (g a)
Instances
 Adjunction f g => Monad (O g f) (Functor f, Functor g) => Functor (O f g) Adjunction f g => Comonad (O f g)
 lComp :: Functor f => O f (O g h) a -> O (O f g) h a Source
 rComp :: Functor f => O (O f g) h a -> O f (O g h) a Source
Basic Instances
Unit
 data Unit a Source

The unit functor.

(Note: this is not the same as (). In fact, Unit is the fixpoint of ().)

Constructors
 Unit
Instances
 Monad Unit Functor Unit Fixpoint Unit () Show (Unit a)
Const
 data Const t a Source
Constant functors. Essentially the same as Unit, except that they also carry a value.
Constructors
Const
 unConst :: t
Instances
 Functor (Const t) Show t => Show (Const t a)
Binary functors
 class Bifunctor f where Source

A type constructor which takes two arguments and an associated map function.

Informally, Bifunctor f implies Functor (f a) with fmap = bimap id.

Methods
 bimap :: (a -> c) -> (b -> d) -> f a b -> f c d Source
Instances
 Bifunctor Either Bifunctor (,)
Trinary functors
 class Trifunctor f where Source

A type constructor which takes three arguments and an associated map function.

Informally, Trifunctor f implies Bifunctor (f a) with bimap = trimap id.

Methods
 trimap :: (a -> a') -> (b -> b') -> (c -> c') -> f a b c -> f a' b' c' Source
Instances
 Trifunctor (,,)