On Fri, May 04, 2007 at 19:23:16 +0200, Phlex wrote: >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 ?
I had a similar problem a little while back. I also asked on this list and maybe that discussion[1] can illuminate the issue. I also put an entry on my blog afterwards in an attempt to capture my understanding of it all[2]. /M [1]: http://www.haskell.org/pipermail/haskell-cafe/2007-January/021367.html [2]: http://therning.org/magnus/archives/249 -- Magnus Therning (OpenPGP: 0xAB4DFBA4) [EMAIL PROTECTED] Jabber: [EMAIL PROTECTED] http://therning.org/magnus
pgpWXpCLxe8LB.pgp
Description: PGP signature
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
