design-patterns - Haskell IO 输出不正确

标签 design-patterns haskell io return

这就是我所拥有的,我想要这样的输出

*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/

相关文章:

haskell - 在reactive-banana中找不到AddHandler

python - 从文件中读取变音符号并将其插入 XML

java - 从 Java 启动文件

c - 如何将 memset() 内存设置为特定模式而不是单个字节?

c++ - 根据抽象类快速确定子类

java - 创建同一个类的不同实例,哪种设计模式?

oop - FooManager 调用 Foo.OnSthHappened() 是一种不好的做法吗?

haskell - 用函数替换Haskell记录有什么好处

haskell - Data.Text.Text 和准引用

java - 如何在 Java 中读取/转换 InputStream 为字符串?