2009/2/9 Gregg Reynolds <d...@mobileink.com>:
>
> Right; "implementation of IO" means also an implementation for >>=, not just
> the IO operators.  I hadn't thought about that but it's hugely important for
> the exposition of monads and IO.
>
> "The IO Char indicates that getChar, when invoked, performs some action
> which returns a character." (Gentle Intro, typical of many expositions.)

In this case, I think "invoked" is shorthand for "interpreted by the
runtime system".

> That, plus the form of \x -> putChar x used with >>=, plus the fact that one
> can do getChar at the ghci command line, plus all the other stuff - it all
> adds up to exasperation.

It's worth noting that ghci, unlike Haskell itself, *does* treat IO
specially. It checks the type of the expression you've entered, and
behaves differently depending on whether it's equal to a, IO a, or IO
().

interp[ e :: IO () ] = e
interp[ e :: IO a ] = e >>= print
interp[ e :: a ] = print e

This is convenient for users, but it has nothing to do with the
semantics of Haskell.

-- 
Dave Menendez <d...@zednenem.com>
<http://www.eyrie.org/~zednenem/>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to