How many Monad explanations need to be written before we admit that the Monad is an unsatisfactory abstraction for practical purposes?
Functions, continuations, state, IO, parsers, futures, streams, lists, transactions, LINQ, observables.
I can only think of one abstraction more useful - the function.
What is so unsatisfactory about them?
That's really not true, is it? I mean, you only need to look at how monads are used to express results as return types to understand the practical usefulness of monads.