这就是我所拥有的,我想要这样的输出
*Main> sumThree
Please enter three integers:
1
2
3
Their sum is: 6
(1,2,3)
但是我不断得到 ,但没有求和
*Main> sumThree
Please enter three integers:
1
2
3
Their sum is:
(1,2,3)
**summ :: Integer -> Integer -> Integer -> IO Integer
summ x1 x2 x3 = return(x1+x2+x3)
sumThree :: IO (Integer, Integer, Integer)
sumThree = do putStr "Please enter tree integers:"
x1 <- getInteger
x2 <- getInteger
x3 <- getInteger
putStr "Their Sum is: "
summ x1 x2 x3
return(x1,x2,x3)**
最佳答案
您必须实际打印 summ
的结果。
不要在 summ
函数中使用 return
,这样该函数的结果类型就是 Integer
,而不是 IO Integer
。然后,执行
putStr (show (summ x1 x2 x3))
而不仅仅是求和x1 x2 x3
。
此外,您确实了解 sum
内置 (Prelude) 函数,对吗?它需要一个 Num
数组,因此您只需执行 putStr (show (sum [x1, x2, x3]))
。
关于design-patterns - Haskell IO 输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948477/