I begin a subject and I invite in it those who is better than me in it understands For which practical needs monads are suitable? Also what is called as a monad in the languages which are distinct from Haskelja? Somehow more or less clearly that is is specific in lazy eval Haskele there is no possibility to guarantee the execution order, differently than through f (g (x)) And somehow more or less clearly that was specific monad IO and is made that after deployment bind to receive f (g (x)) with an order warranty that is obviously necessary to input-output. More or less clearly that such Maybe and what for it. More or less clearly that on monads it is possible to make from JS, for this purpose bind in certain cases should not call the lambda, and push it in new object, whence it will be called once then. Somehow so. Not so clearly, what this mechanism suits. I will try to express the understanding that such a monad in Haskele generally: - Monad T there is a wrapper round value T - thus a wrapper dynamic, i.e. "interior" can and always not lie in storage, and can be under construction at reversal->> =, he bind, derives an interior from a monad and gives it there (to that lambda) where asked. I.e. "tears". - thus the lambda is obliged to return "a wrapped up" monad. For this purpose is return which on an interior builds a monad (in the elementary case puts it in a new monad). I.e." Turns ". - at a spelling and resets for the monads it is necessary to observe identities of a type" to Turn (to Tear (M)) = M ". The old kind set dresser which turns out it is possible to implement in normal languages inheritance with overlapping . The only thing: thus objects will be" under the link ", and the monad allows" on value ". I am right? And in other languages as? Thus there is still such artful trick: the list is a monad, and bind at it - iteration under the list. It somehow looks a little for no reason at all.