Ah, you came very close to getting this right. The problem is on your two putStrLn lines. For example, putStrLn "The sum is " ++ show(sum)
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
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners