我正在观看Haskell Fundamentals第1部分'在Pluralsight。在第二章中,作者展示了一个非常简单的函数,其中包含 if 。当我尝试它时,每当我尝试使用带负数的函数时,我都会收到错误。这是函数
posOrNeg x =
if x >= 0
then "Positive"
else "Negative"
当我尝试使用正数的方法时,它工作正常但是当我用负数调用方法时,winGHCi会抛出以下错误。
"没有(显示(a0 - > [Char])))的实例因使用' print' ..."
它是否更多呢只是这里的功能?
答案 0 :(得分:14)
当将相同的函数应用于相同类型的正数时,无法将函数应用于负数时出现类型错误。
在没有看到代码的情况下,最可能的解释是你写了像posOrNeg -42
这样的内容,它与posOrNeg - 42
相同,并试图从posOrNeg
中减去42(这不是可能是因为,当然,你不能从函数中减去一个数字)。将函数应用于负数的正确语法是posOrNeg (-42)
,并且在数字周围加上括号,因此无法将-
解析为中缀运算符。