I'm not sure of a reference, the basic idea is this:

  IO a is represented by the pair (RealWorld, a) (unboxed, really
      but whatever)
  When an IO action is run (via main), a RealWorld state is provided
      by the compiler and passes it around.
  When you do unsafePerformIO, the compiler conjures up some
      value of type RealWorld to use.  It is unsafe because it
      doesn't guarentee the relative order of IO actions.

Of course, someone correct me if I'm mistaken.

 - Hal

--
Hal Daume III

 "Computer science is no more about computers    | [EMAIL PROTECTED]
  than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume

On Fri, 20 Sep 2002, David Sabel wrote:

> In read your paper ""Tackling the Awkward Squad: monadic input / output,
> concurrency, exceptions, and foreign-language calls in Haskell",  and have
> a question about unsafePerformIO.
> 
> In your operational semantic of the IO-Monad you tell nothing about, how
> 'unsafe' IO actions are performed, is there another paper / documentation
> about
> this available, or can you - or someone else - give me a review about that?
> 
> David
> JWGU Frankfurt
> 
> 
> _______________________________________________
> Glasgow-haskell-users mailing list
> [EMAIL PROTECTED]
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
> 

_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to