Recall that a monad requires a singleton function `mid : P-> MP`, and a
composition operator `>=> : (P->MQ) -> (Q->MR) -> (P->MR)`. The type for
the composition operator stated here corrects a typo in the class handout.
Recall that a monad requires a singleton function `mid : P-> MP`, and a
composition operator `>=> : (P->MQ) -> (Q->MR) -> (P->MR)`. The type for
the composition operator stated here corrects a typo in the class handout.
is better. (Think of it as "m" plus "identity", not as the start of "midway".)
We will also move freely back and forth between using `>=>` and using `<=<` (aka `mcomp`), which
is better. (Think of it as "m" plus "identity", not as the start of "midway".)
We will also move freely back and forth between using `>=>` and using `<=<` (aka `mcomp`), which