输入“|”的解析错误
Parse error on Input '|'
我查看了关于此错误消息的每个线程并尝试了所有方法,但它一直在扰乱编译器。
我的代码:
check2 :: Slot -> Slot -> Bool
check2 c1 c2 = if (getTime c1 == getTime c2) | (getSubject c1 == getSubject c2)
then False
else True
它抛出了一个很好的 error: parse error on input ‘|’
澄清:所有制表符都是 8 个空格
您可能会猜到,该方法是更大方法的一部分,最初位于 where
子句中。如果我把它放在 where
子句中,解析错误在不同的地方,这非常令人沮丧。
您应该使用 ||
(二进制逻辑或运算符,与 Java 相同)而不是 |
。
您可以这样更直接地编写函数:
check2 :: Slot -> Slot -> Bool
check2 c1 c2 = not ((getTime c1 == getTime c2) || (getSubject c1 == getSubject c2))
|
用于定义带有条件的函数。比如你自己的函数也可以定义为:
check2 :: Slot -> Slot -> Bool
check2 c1 c2 | (getTime c1 == getTime c2) || (getSubject c1 == getSubject c2) = False
| otherwise = True
我查看了关于此错误消息的每个线程并尝试了所有方法,但它一直在扰乱编译器。 我的代码:
check2 :: Slot -> Slot -> Bool
check2 c1 c2 = if (getTime c1 == getTime c2) | (getSubject c1 == getSubject c2)
then False
else True
它抛出了一个很好的 error: parse error on input ‘|’
澄清:所有制表符都是 8 个空格
您可能会猜到,该方法是更大方法的一部分,最初位于 where
子句中。如果我把它放在 where
子句中,解析错误在不同的地方,这非常令人沮丧。
您应该使用 ||
(二进制逻辑或运算符,与 Java 相同)而不是 |
。
您可以这样更直接地编写函数:
check2 :: Slot -> Slot -> Bool
check2 c1 c2 = not ((getTime c1 == getTime c2) || (getSubject c1 == getSubject c2))
|
用于定义带有条件的函数。比如你自己的函数也可以定义为:
check2 :: Slot -> Slot -> Bool
check2 c1 c2 | (getTime c1 == getTime c2) || (getSubject c1 == getSubject c2) = False
| otherwise = True