I've spent more time trying to understand monads than all the named design patterns put together. And I don't have a favorite design pattern, just a vague skepticism for the lot of them, and a strong skepticism for anyone who promotes them.
Anyway, being well-defined is not a sufficient condition for being easy to understand.
Anyway, being well-defined is not a sufficient condition for being easy to understand.