[Haskell-cafe] Re: philosophy of Haskell

Heinrich Apfelmus apfelmus at quantentunnel.de
Wed Aug 18 04:01:18 EDT 2010

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

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.

Heinrich Apfelmus


More information about the Haskell-Cafe mailing list