Hello,I have a small piece of code that does not compile and I'm having trouble figuring out why.Here is the relevant snippet:readChunks :: Handle -> [String] -> IO [String]readChunks handle accum = dochunk <- readHeaderChunk handleif isLast chunkthen return (accum ++ chunk)else return (readChunks handle (accum ++ chunk))isLast :: [String] -> BoolreadHeaderChunk :: Handle -> IO [String]And here is the single compiler error:hacks.hs:48:18:Couldn't match expected type `[String]'with actual type `IO [String]'In the return type of a call of `readChunks'In the first argument of `return', namely`(readChunks handle (accum ++ chunk))'In the expression: return (readChunks handle (accum ++ chunk))What I'm most confused about is that chunk is passed to isLast as a [String] with no compiler error but cannot be passed to accum ++ chunk that way. Or so it seems. Can someone she some light on this? Thanks.
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners