Monad is programming construct used practically by all functional languages, including F#, and causing serious difficulties in understanding.

Monads were introduced in the computer science from the abstract branch of mathematics and follow the mathematical tradition to attack every problem axiomatically, in some kind of “follow me” style. Entities and constructs introduced on this way look strange and meaning is vague. “And it is monad!” on the end of the tutorial doesn’t bring clarity.

On the other site it is evident that the power of monads roots not in its mathematical origin only but in the nature of the programming problems to which monads are applied. Based on this we can start from a specific problem typical for all functional languages and will try to solve it in a logical and sequential manner, just as a programming problem. Surprisingly, all weird properties and “laws” associated with monads can be recreated on this way.