[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