Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如果条件抛出错误,为什么下面的数字为负数?_Haskell - Fatal编程技术网

Haskell 如果条件抛出错误,为什么下面的数字为负数?

Haskell 如果条件抛出错误,为什么下面的数字为负数?,haskell,Haskell,我正在看Pluralsight中的“Haskell基础知识第一部分”。在第二章中,作者展示了一个非常简单的函数,其中包含if。当我尝试它时,每当我尝试带负数的函数时,我都会出错。下面是函数 posOrNeg x = if x >= 0 then "Positive" else "Negative" 当我尝试使用正数的方法时,效果很好,但当我使用负数调用该方法时,winGHCi抛出以下错误。 “没有因使用“打印”而产生的(Show(a0->[Char]))”是否比

我正在看Pluralsight中的“Haskell基础知识第一部分”。在第二章中,作者展示了一个非常简单的函数,其中包含if。当我尝试它时,每当我尝试带负数的函数时,我都会出错。下面是函数

posOrNeg x = 
    if x >= 0
    then "Positive"
    else "Negative"
当我尝试使用正数的方法时,效果很好,但当我使用负数调用该方法时,winGHCi抛出以下错误。

“没有因使用“打印”而产生的(Show(a0->[Char]))”
是否比这里的函数更重要

当将同一函数应用于同一类型的正数时,将该函数应用于负数不会出现类型错误


在没有看到代码的情况下,最有可能的解释是您编写了类似于
posOrNeg-42
,这与
posOrNeg-42
相同,并尝试从
posOrNeg
中减去42(当然,这是不可能的,因为您不能从函数中减去数字)。将函数应用于负数的正确语法是
posOrNeg(-42)
,数字周围有括号,因此无法将
-
解析为中缀运算符。

是的,我没有在括号中传递负数。我以前不知道有什么不同。这是有道理的。请注意,使用
-XNegativeLiterals
,您可以执行
posOrNeg-42
(但不能执行
posOrNeg-42
)。有时使用
否定
会更容易一些,这取决于具体情况