add something to a list
Sun, 17 Feb 2002 13:33:25 -0600 (CST)
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
> 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
> 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.
* 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