Hi, I've written a program that reads in a list of things from stdin and performs an independent computation on each one and prints the results as a list back to stdout. I've implemented it as in the following simple example: import IO getIntsFromHandle :: Handle -> IO [Int] getIntsFromHandle handle = do string<-hGetContents handle return (read string) writeToHandle :: (Show a)=> a -> Handle -> IO () writeToHandle x handle = do hPutStr handle (show x) hClose handle main :: IO () main = do ints<-getIntsFromHandle stdin writeToHandle (map (^2) ints) stdout but with this approach, all the data are read before they are written, or at least so it seems from memory utilization and by using the keyboard interactively to type into stdin. Is there a more memory-efficient approach, perhaps exploiting laziness somehow? Thanks, Carl