
jerzy.karczmarczuk@info.unicaen.fr wrote:
Andrew Coppin writes:
I've seen comments in various places that monads allow you to "borrow things from the future". That sounds completely absurd to me... can anybody explain?
Actually, "borrowing from the future" - in an interpretation which is close to my own interests - doesn't need monads, but *laziness*.
While this is true, the "mdo" and associated MonadFix class do implement it in a monadic framework where you can write things like mdo x <- f y y <- g x If you interpret do-notation as equivalent to imperative programming then this does indeed look like time travel. Under the covers its more equivalent to let x = f y y = g x which is also known as "tying the knot" or the "credit card transform" (both keywords worth looking up). However I can't say I really have my head around it properly. Paul.