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