Bill Atkins wrote:
Conal Elliott wrote:

And the IO monad is what Jerzy asked about.  I'm pointing out that
the state monad does not capture concurrency, and the "EDSL model"
does not capture FFI.  (Really, it depends which "EDSL model".  I
haven't seen one that can capture FFI.  And maybe not concurrency
either.)

So which model captures the way the IO monad works?

This is thoroughly discussed in section 3 of

    Simon Peyton Jones.
    Tackling the awkward squad: monadic input/output, concurrency,
      exceptions, and foreign-language calls in Haskell
    http://tinyurl.com/spj-marktoberdorf

In particular, the World -> (a,World) model is unsuitable even without concurrency because it cannot distinguish

   loop, loop' :: IO ()
   loop  = loop
   loop' = putStr "c" >> loop'

I interpret the "EDSL model" to be the operational semantics presented in the tutorial paper.


Regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com

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

Reply via email to