使用变量vs文字数在ghci中调用函数时的不同行为

时间:2016-08-06 10:44:23

标签: haskell

我定义了一个简单的函数来查找数字的绝对值:

let abs n | n >= 0 = n | otherwise = -n 

使用变量

调用该函数
Prelude> let x = -10
Prelude| 
Prelude> abs x
10

使用值

调用该函数
Prelude> abs -10
<interactive>:65:1:
  Non type-variable argument in the constraint: Num (a -> a)
  (Use FlexibleContexts to permit this)
  When checking that ‘it’ has the inferred type
    it :: forall a. (Num a, Num (a -> a), Ord a) => a -> a

我不理解第二次调用的失败。我使用的是GHCi,版本7.10.2。

1 个答案:

答案 0 :(得分:4)

abs -10实际上意味着abs - 10,即abs10的减法。

您想要abs (-10)