Isn't a Monad just the fancy name for a type/structure that implements map and flatMap in a lawful manner?
You can derive `map` from these two other functions so it doesn't need to be part of the interface.
Confusingly, map in scala is fmap in Haskell