After all, a functor is just a way to "bind a continuation to an expression", but this time the function you're binding is of type `a -> b`.
A better way to characterize monads is that they're generic types such that you can compose functions `A -> M[B]` with functions `B -> M[C]`. On first glance, the types don't work for basic function composition. Monads are more-or-less types `M` where a reasonable compose operation exists (for all A,B,C).
Covariant functors in programming are basically producers (I don't know of any counterexamples), so monads are essentially producers where production composes.