Hello Wolfgang, Saturday, February 11, 2006, 3:17:12 PM, you wrote:
>> each and every monadic operation is a function! WJ> What do you mean with "monadic operatation"? (>>=), (>>) and return are, of WJ> course, functions but an I/O action like getChar is *not* a function. Also a WJ> list is not a function but a value of the list monad. >> type "IO a" is really "RealWorld -> (RealWorld,a)" WJ> This representation is just there to help people understand what I/O is but WJ> actually, IO a is a type which is not implementable in ordinary Haskell and WJ> therefore cannot be a function. In addition, RealWorld -> (RealWorld,a) as WJ> an explanation of what IO a is has its limitations. If we run an I/O action, WJ> we aren't just interested in the final state but also in intermediate states. {putStr "a"} is a function, which receives previous world state and returns updated world state where "a" is written to the terminal. it's an _essential_ part of monadic way to I/O in the list comprehension, filters also use value of current list element. if filter don't use this element value, it can be computed prior to comprehesion to speed the things up >> and the same for any other monad. concept of the monad by itself means >> carrying "hidden" state from one monadic operation to the next. WJ> That's too specific. A list, for example, doesn't have to do anything with WJ> state and [a] is not represented as a function. -- Best regards, Bulat mailto:[EMAIL PROTECTED] _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe