For compatibility with Haskell. Note that monads are not free to define return and pure differently!
return
pure
Similar to foldl, but uses a function wrapping its result in a Monad. Consequently, the final value is wrapped in the same Monad.
foldl
Monad
Also called bind.
bind
Also called flatten or mu
flatten