
jerzy.karczmarczuk@info.unicaen.fr wrote:
Alberto G. Corona writes:
(...) Desugarize the "do" notation, after that, desugarize the >>= and >> operators down to the function call notation and suddenly everithing lost its magic because it becomes clear that a haskell monad is a sugarization of plain functional tricks.
Yep.
But, BTW, could you tell me what was the result of the final desugarization and the BASIC sense of the IO monad for you?
Example: do x <- getLine print (x+1) print (x+2) There are various models. One (the state monad model) of them would desugar this to: \world0 -> let (x, world1) = getLine world0 world2 = print (x+1) world1 world3 = print (x+2) world2 in world3 Another one (the EDSL model, which I personally prefer) would desugar it to something as simple as this: GetLine `BindIO` \x -> Print (x+1) `BindIO` const (Print (x+2)) I wonder if there are more models for IO. Greets, Ertugrul -- nightmare = unsafePerformIO (getWrongWife >>= sex) http://ertes.de/