Safe Haskell | Safe |
---|---|

Language | Haskell98 |

`Cofunctor`

is a structure from category theory dual to `Functor`

A `Functor`

is defined by the operation `fmap`

:

fmap :: (a -> b) -> (f a -> f b)

This means that its dual must be defined by the following operation:

cofmap :: (b -> a) -> (f b -> f a)

Since beginning his investigations, the author of this package has discovered
that this pattern is *at least* as commonly used as `Functor`

. In fact, many
ubiquitous Haskell types (e.g. `[]`

, `Maybe`

, `((->) a)`

turn out to have a
`Cofunctor`

instance.

- class Cofunctor f where