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

Joh*_*orn 2 io haskell

我在Haskell中遇到这个快速测试时遇到的快速问题:

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

inc :: (Num a) => a -> a
inc x = x+1
Run Code Online (Sandbox Code Playgroud)

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

谢谢,如果你能清醒我:)

sep*_*p2k 12

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

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

对于这种特殊情况,还有print一个被定义为的功能putStrLn . show,所以你可以做print (inc 3)print $ inc 3.