我在Haskell中遇到与此快速测试相关的问题时遇到的快速问题:
module Main where
main :: IO()
main = putStrLn (show (inc 3))
inc :: (Num a) => a -> a
inc x = x+1
有没有更好的方法来输出inc函数的值?如果不使用嵌套的parens来强制执行评估顺序,我无法获得输出。使用较少的parens我收到类型错误。只是想想必须有更好的方法。
谢谢你能清醒一下:)
答案 0 :(得分:12)
首先:括号不强制执行评估顺序。
为了摆脱括号,您可以使用优先级非常低的$
,从而允许您删除最后一个参数的括号。
对于这种特殊情况,还有print
函数定义为putStrLn . show
,因此您可以执行print (inc 3)
或print $ inc 3
。