This diagram demonstrates the relationship between certain
`Functor`

, `Applicative`

and `Monad`

operators.

See the Typeclassopedia for details.

`(→) a`

instance
This diagram demonstrates the properties of certain `Functor`

,
`Applicative`

and `Monad`

operators when using the
`(→) a`

instance.

(It’s interesting to note how the types, when specialized to the
`(→) a`

instance, dictate the only correct behavior for each
one.)

Although completely unrelated to functors, a visualization of
`on`

might be appropriate here, since it has some conceptual
similarity to the combinators above. (Well, it could be
implemented in terms of them as ```
(f `on` g) x y = liftA2 f ($x) ($y)
g
```

).

(Inspired by mauke’s diagram.)