jerzy.karczmarc...@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/


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to