Monad
class MonadPlus m
class Monad m
class Functor f