This is a personal mental model of how I would classify Haskell main type classes if
semigroupoidswere first-class.
Functor: <$>
- Apply:
<*>,<.>- Applicative:
pure,return - Bind:
join,=<<,<=<
- Applicative:
- Alternative (Alt):
<|>,<!>- Zero (Alternative):
zero,empty
- Zero (Alternative):
- CoApply:
<@> - CoApplicative:
copure,extract