
On Fri, Jun 22, 2007 at 04:53:42PM +0100, Malcolm Wallace wrote:
"Olivier Boudry"
wrote: I did this replacing: (putStrLn . unlines . concat) origLinks with (putStrLn . unlines . take 10 . concat) origLinks
Unfortunately, 'origLinks' has already been computed in full, before the 'take 10' applies to it. Why? Because 'origLinks' is the result of an I/O action, which forces it:
main = do ... origLinks <- mapM (getLinksAfterImgByAttr ...) picLinks
What you really want to do is to trim the picLinks before you download them. e.g.
main = do ... origLinks <- mapM (getLinksAfterImgByAttr ...) (take 10 picLinks)
Or make this lazy with:
main = do ... origLinks <- mapM (unsafeInterleaveIO . getLinksAfterImgByAttr ...) picLinks -- David Roundy Department of Physics Oregon State University