?Jeff Newbern wrote (on Tue, 12 Aug 2003 at 17:20):
> The functions exported from the IO module do not
> perform I/O themselves. They return I/O actions, which describe an I/O
> operation to be performed. The I/O actions are combined within the IO
> monad (in a purely functional manner) to create more complex I/O
> actions, resulting in the final I/O action that is the main value of the
> program. The result of the Haskell compiler is an executable function
> incorporating the main I/O action. Executing the program "applies" this
> ultimate I/O action to the outside world to produce a new state of the
> world.
That seems to me the wrong thing to say. There is no application. Whether or not the word is put in quotes, it is something involving a function and an argument. An IO action is not a function.
So then, in your view, what *is* an IO action?
One conceptual model is that an IO action with type (IO a) denotes a function of type World -> (World,a). Given that model, "applying" an IO action to the external world seems like a perfectly reasonable account of executing such an action.
-antony
-- Antony Courtney Grad. Student, Dept. of Computer Science, Yale University [EMAIL PROTECTED] http://www.apocalypse.org/pub/u/antony
_______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe