Speaking of small functions, Kleisli composition should at least be in Control.Monad. It's a simple thing, and not commonly explicitly used at the moment, but rather important conceptually. (@@) :: (Monad m) => (b -> m c) -> (a -> m b) -> (a -> m c) g @@ f = \x -> f x >>= g