在main中执行简单I / O的更好方法

时间:2010-08-30 00:09:29

标签: haskell io

我在Haskell中遇到与此快速测试相关的问题时遇到的快速问题:

module Main where
main :: IO()
main = putStrLn (show (inc 3))

inc :: (Num a) => a -> a
inc x = x+1

有没有更好的方法来输出inc函数的值?如果不使用嵌套的parens来强制执行评估顺序,我无法获得输出。使用较少的parens我收到类型错误。只是想想必须有更好的方法。

谢谢你能清醒一下:)

1 个答案:

答案 0 :(得分:12)

首先:括号不强制执行评估顺序。

为了摆脱括号,您可以使用优先级非常低的$,从而允许您删除最后一个参数的括号。

对于这种特殊情况,还有print函数定义为putStrLn . show,因此您可以执行print (inc 3)print $ inc 3