【发布时间】:2014-03-15 20:44:52
【问题描述】:
我正在尝试编写一个程序,它从用户那里读取一个整数 n,然后读取 n 个整数(在单独的行上),最后显示读取的 n 个数字的总和。
到目前为止,这是我的代码:
addNumbers :: IO ()
addNumbers = do
putStrLn "Enter a number:"
num <- getInt
addNumbers2 num
addNumbers2 :: Int -> IO ()
addNumbers2 num = do
putStrLn "Enter a number:"
n <- getInt
if num == 1 then
print n
else do
print (n + addNumbers2 (num - 1))
目前无法编译,错误提示:
Couldn't match expected type `Int' with actual type `IO ()'
In the return type of a call of `addNumbers2'
In the second argument of `(+)', namely `addNumbers2 (num - 1)'
In the first argument of `print', namely
`(n + addNumbers2 (num - 1))'
IO 真的让我很困惑,我试图获得以下输出:
Enter a number:
3
Enter a number:
2
Enter a number:
1
Enter a number:
5
Sum is: 8
【问题讨论】: