On Sun, 17 Feb 2002, Cagdas Ozgenc wrote: > Hi Adrian, > > How can I add a function that sorts this list that I read from the user and > accumulate using the function that you described? I am not asking for a sort > algorithm of course, I am just wondering how to feed the IO Path as an input > to a sort function? Is it suppose to look like this: > > sort :: IO Path -> IO Path
It could. (to make it simpler you may need a sort' :: Path -> Path function though, as in. sort getpath = do x <- getpath -- x has type Path return (sort' x) where sort' = .... -- sort' is typed as above and produces -- a sorted list list of -- type Path > or > > sort :: IO Path -> Path The point of the IO monad is to thread the state of the "World" (which your program modifies) explicitly through your program. The pure functions are the plumbing. A function of type IO Path -> Path cannot modify the world state since the world state is not the result of function application *. > How do you iterate over IO Path? Um, I cant think of another good introductory way than that sort :: IO Path -> IO Path I mentioned above. Jay Cox * Minus the obvious facts that haskell implementions obviously do: 1. modify the world state as executing functions create new datastructures that need to be allocated, may cause garbage collection, maybe cause new heap allocation (do they?) or otherwise cause program termination (run out of stack/heap/ ... ), etc. 2. unless it uses sort unsafeIO and/or other "hacks." unsafeIO generally should not be used. PS: Anybody got any other suggestions for IO monad entry-level docs? I suppose Haskell Wiki on haskell.org might be good place to allude to. _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe