Dmitri Pissarenko <[EMAIL PROTECTED]> writes: > a) asking the user to enter several numbers (while the end of the sequence is > indicated by entering 0) > b) calculate the sum of those numbers. > > ... >
Here is a corrected version: > module Main where > > import IO Delete this. > main = do > hSetBuffering stdin LineBuffering This is extraneous - stdin should be line buffered by default. > words <- askForNumbers > printWords words > map read words > putStrLn "The sum is" > foldl (+) 0 words Here you map read over words and discard the result. Then you wold over the words and produce an interger, whereas you should produce an IO value from the do block. Here is a complete implementation (untested): main = do words <- askForNumbers mapM_ putStrLn words putStrLn "EOL" let nums = map read words print nums putStrLn "The sum is" print (foldl (+) 0 nums) - Einar Karttunen _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users