[Haskell-cafe] Recantation and updated views

Daniel Fischer daniel.is.fischer at web.de
Tue Jan 25 10:30:16 EST 2005


Okay, I was stupid, having ignored my own advice to always look at the 
sources.
I stupidly assumed IO a was not a function-type. On retrospect, I can't 
imagine, how that came to me.
I've looked it up now, and for ghc, I found

newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))

which is more or less what I've arrived at, eventually.

For hugs, it's
newtype IO a = IO ((IOError -> IOResult) -> (a -> IOResult) -> IOResult),
which I find somewhat more contrived.

So I apologize for all the nonsense that came from that and happily agree that 
getChar &c are well defined values of IO a.

Whether we have

putStrLn "hello" >> mzero === mzero

depends on what raiseIO#  exactly does, I've no idea.
Again, sorry for all the fuss.

Thanks to (in alphabetical order) Jorge, Jules and Ketil for helping me out of 
my error.

Daniel


More information about the Haskell-Cafe mailing list