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