首先,在提出问题时,发布实际错误很有帮助。这是我得到的:
test.hs:3:7:
Precedence parsing error
cannot mix `<' [infix 4] and `<' [infix 4] in the same infix expression
test.hs:4:7:
Precedence parsing error
cannot mix `<=' [infix 4] and `<=' [infix 4] in the same infix expression
test.hs:6:7:
Precedence parsing error
cannot mix `<=' [infix 4] and `<=' [infix 4] in the same infix expression
test.hs:7:7:
Precedence parsing error
cannot mix `<' [infix 4] and `<=' [infix 4] in the same infix expression
现在,问题基本上是<
(和其他比较运算符)实际上只是二进制函数 - 带有两个参数的函数。编译器告诉您它无法知道如何在表达式中放置括号,因为这些函数具有相同的优先级。举个例子,这个:
| 0 < qCalor < 3 = 30
编译器不知道它是指(0 < qCalor) < 3
还是0 < (qCalor < 3)
。无论如何,该行没有合理的打字。
我建议使用类似的东西(0 < qCalor) && (qCalor < 3)
,或者更好的是,使用这样的函数(可能有一个内置函数):
betweenNums a b c = (a < b) && (b < c)