
Hi, all I'm new to haskell and currently reading yaht. I find some problems when trying to solve exercise 3.10. The exersices asks to read a list of numbers terminated by a zero, and figure out the sum and product of the list. My program is as follows: ex3_10 = do hSetBuffering stdin LineBuffering numbers <- getNumber let sum = foldr (+) 0 numbers product = foldr (*) 1 numbers putStrLn "The sum is " ++ show(sum) putStrLn "The product is " ++ show(product) getNumber = do putStrLn "Give me a number (or 0 to stop):" num <- getLine if read num == 0 then return [] else do rest <- getNumber return (read num : rest) But when i load the program, ghci reports error: Couldn't match expected type `[a]' against inferred type `IO ()' In the first argument of `(++)', namely `putStrLn "The sum is "' In a stmt of a 'do' expression: putStrLn "The sum is " ++ show (sum) And i just don't understand the first sentence. Could you tell what does it mean? Thanks for your reply