Re:Frege: A Haskell-Like Language for the JVM
by mafribe on Friday August 14, 2015 @06:51AM
(#10059460)
I agree, the concept of monads is very simple, actually trivial. It's just a generalised form of function composition.
But thinking monadically and abstracting monadically is extremely different from what programmers normally learn, for a start because important monads like state and exceptions are built-in features of most programming languages. Seeing that these things have a common pattern, and seeing that it may be worthwhile to abstract this common pattern takes a lot of time.
The mismatch between the utter simplicity of the concept of monads, and the complicated explanations one comes across doesn't help.
Consider the Maybe monad - it encodes optional values in a simple way. The approach before this is to have something called "null" that would wreck your programs. Maybe monad is one of the best improvements to day-to-day programming tasks that I've personally experienced in my lifetime.