Hi, the interact remark triggered me to post this remark on nested use of IO. (I posted something similar some month ago on haskell-cafe/I read the haskell-archives ones so often)


What about this program:

 main :: IO ()
 main = putStr (show (putStr "Hello World!"))

Am I the only one who feels that there is some conceptual _wrongness_ about Hugs responding with <<IO action>>?

Another question with a trivial answer, what is the result of:

 main :: IO (IO ())
 main = return (putStr "Hello World!")

Clearly it also shows the relation between IO and chosen evaluation strategy.

Cheers,
 l4t3r

Some other random thoughts:....

Hmm,... there was also some question on the use of existential types, what about the following one (might be used to implement IO trivially in a _pure*_ manner! *with respect to rewrite strategy):

data Nomad a = Return a | forall b . Bind (Nomad b) (b -> Nomad a)

I would like to see Haskell extended with subtyping on algebraic datatypes (or is this implemented already?) Some of my programs would really benefit from such a feature.

I am a teacher, I use haskell to test random ideas from combinatorics, SAT/EDA verification, control theory, real-time processes, and compiler/verification-language implementation. In short, I use Haskell as a vehicle to test short algorithms.

Oh yeah, I propose to move the link on the Haskell site on "Monads explained by the Catholic Church" from the "Humor" section to the "Learning Haskell" section since they seem to be the only ones who actually clearly understand what is up with monadic IO. ;-p (actually, that is a dead-serious proposition)

Hmm, long post, cheers again,
 l4t3r

_________________________________________________________________
The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail


_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to