我收到了以下错误
Prelude> abs n | n>=0 = n+100 | otherwise =n
Prelude> abs 10
110
Prelude> abs -1
<interactive>:44:1: error:
* Non type-variable argument in the constraint: Num (t -> t)
(Use FlexibleContexts to permit this)
* When checking the inferred type
it :: forall t. (Ord t, Num (t -> t), Num t) => t -> t
Ord
?答案 0 :(得分:5)
当您将abs -1
或x -1
Haskell解析为-
作为二元运算符时。所以它抱怨abs
(这是一个函数)不是一个数字。正如Zpalmtree所说,你需要写abs (-1)
。