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