Portability | non-portable (rank-2 polymorphism) |
---|---|
Stability | experimental |
Maintainer | Edward Kmett <ekmett@gmail.com> |
- type Dist f g = forall a. f (g a) -> g (f a)
- type :~> f g = forall a. f a -> g a
- type Natural f g = f :~> g
- type :~~> f g = forall a b. f a b -> g a b
- type Dinatural f g = forall a. f a a -> g a a
- class PostFold m f where
- postFold :: f (m (f a)) -> m (f a)
- class PostUnfold w f where
- postUnfold :: w (f a) -> f (w (f a))
- class PreFold f m where
- preFold :: f (m (f a)) -> f (m a)
- class PreUnfold f w where
- preUnfold :: f (w a) -> f (w (f a))
- class Distributes f g where
- dist :: f (g a) -> g (f a)
- class Functor f => FunctorZero f where
- fzero :: f a
- class FunctorZero f => FunctorPlus f where
- fplus :: f a -> f a -> f a
- class Functor f => FunctorSplit f where
- fsplit :: f a -> (f a, f a)
Documentation
type :~~> f g = forall a b. f a b -> g a bSource
A transformation natural in both sides of a bifunctor.
class PostUnfold w f whereSource
postUnfold :: w (f a) -> f (w (f a))Source
class Distributes f g whereSource
class FunctorZero f => FunctorPlus f whereSource