[Haskell-beginners] Problems when trying to solve yaht exercise 3.10

ZelluX zellux at gmail.com
Fri Mar 20 08:45:35 EDT 2009


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20090320/1ee32429/attachment-0001.htm


More information about the Beginners mailing list