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

Attachment: pgpWXpCLxe8LB.pgp
Description: PGP signature

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to