[Haskell-cafe] Re: philosophy of Haskell

Conal Elliott conal at conal.net
Fri Aug 13 03:53:26 EDT 2010


>
> 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
>

Hi Ertugrul,

This state monad model does not really work for IO, since it fails to
capture IO's concurrency (with non-deterministic interleaving).  I don't
know whether/how the "EDSL model" you mention addresses concurrency or FFI.

So, maybe these models are models of something other (and much less
expressive) than Haskell's IO.  Which re-raises Jerzy's question.

Regards,   - Conal

On Mon, Aug 9, 2010 at 10:38 PM, Ertugrul Soeylemez <es at ertes.de> wrote:

> jerzy.karczmarczuk at 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100813/dd742ba6/attachment.html


More information about the Haskell-Cafe mailing list