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

时间:2014-09-21 03:49:39

标签: haskell

我正在观看Haskell Fundamentals第1部分'在Pluralsight。在第二章中,作者展示了一个非常简单的函数,其中包含 if 。当我尝试它时,每当我尝试使用带负数的函数时,我都会收到错误。这是函数

posOrNeg x = 
    if x >= 0
    then "Positive"
    else "Negative"

当我尝试使用正数的方法时,它工作正常但是当我用负数调用方法时,winGHCi会抛出以下错误。
"没有(显示(a0 - > [Char])))的实例因使用' print' ..."
它是否更多呢只是这里的功能?

1 个答案:

答案 0 :(得分:14)

当将相同的函数应用于相同类型的正数时,无法将函数应用于负数时出现类型错误。

在没有看到代码的情况下,最可能的解释是你写了像posOrNeg -42这样的内容,它与posOrNeg - 42相同,并试图从posOrNeg中减去42(这不是可能是因为,当然,你不能从函数中减去一个数字)。将函数应用于负数的正确语法是posOrNeg (-42),并且在数字周围加上括号,因此无法将-解析为中缀运算符。