
4 May
2007
4 May
'07
1:23 p.m.
Hello all, I'm trying to learn haskell, so here's is my first newbie question. I hope this list is appropriate for such help requests. I'm trying to write a function with the signature [IO Int] -> IO [Int] Here is my first attempt : conv :: [IO Int] -> IO [Int] conv l = do val <- (head l) return (val : (conv (tail l))) This does not work as I'm consing an Int to an (IO [Int]). So I tried this : conv2 :: [IO Int] -> IO [Int] conv2 l = do val <- (head l) rest <- (conv2 (tail l)) return (val : rest) That works, but it won't work for infinite lists. How could I achieve the desired result ? Thanks in advance, Sacha