Close: the required operations are `flatMap` and bind/pure/point/lift/return/whatever-you-want-to-call-it.
You can derive `map` from these two other functions so it doesn't need to be part of the interface.
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