将负数传递到Haskell函数时出错

  • 本文关键字:Haskell 函数 出错 haskell
  • 更新时间 :
  • 英文 :


这里是Haskell的新手。

我有这个功能:

addNums num1 num2 =
num1 + num2

当我尝试使用GHCi运行addNums 1 -2时,它会返回以下错误:

<interactive>:40:1: error:
* No instance for (Show (Integer -> Integer))
arising from a use of `print'
(maybe you haven't applied a function to enough arguments?)
* In a stmt of an interactive GHCi command: print it

我注意到,为了使它按预期运行,我需要添加括号:addNums 1 (-2)。为什么?

您编写的代码被解析为(addNums 1) - 2,因此编译器获取addNums 1的结果,即函数Integer -> Integer,并尝试从中减去2

为了获得正确的传递顺序,您需要在第二个参数周围添加括号:

addNum 1 (-2)

最新更新