
On Sun, Mar 1, 2009 at 4:28 AM, Will Ness
Michael Easter
writes: ... After all, we can have a definition of such a value, and have it run multiple times for us, so _as definition_ it's no different than any other definition in Haskell. It's just that _its value_ can cause the system to actually perform these IO actions in some circumstances.
But it isn't a definition. "Reference" would be better; "getChar" is a term that references a value.
As for terminology: we've got to have some special name for functions that are chainable by bind. Calling them actions confuses them with the real world actions performed by IO.
Correction: special name for IO "functions" (actually "IO terms" would be better). The monad just organizes stuff, so the IO monad, as monad, is no different than any other monad.
May be to call them "action functions"?
This was a big problem for me; I find terms like "action", "computation", "function" completely misleading for IO terms/values. You might find "Computation" considered harmful. "Value" not so hot eitherhttp://syntax.wikidot.com/blog:5useful; see also the comment "Another try at the key sentence". There are a few other articles on the blog that address this terminology problem. -gregg