Sha*_*sum 1 haskell if-statement where-clause
我查看了每个关于此错误消息的线程并尝试了所有内容,但它一直在破坏编译器.我的代码:
check2 :: Slot -> Slot -> Bool
check2 c1 c2 = if (getTime c1 == getTime c2) | (getSubject c1 == getSubject c2)
then False
else True
Run Code Online (Sandbox Code Playgroud)
它扔得很好 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))
Run Code Online (Sandbox Code Playgroud)
将|用于用条件来定义功能.例如,您自己的函数也可以定义为:
check2 :: Slot -> Slot -> Bool
check2 c1 c2 | (getTime c1 == getTime c2) || (getSubject c1 == getSubject c2) = False
| otherwise = True
Run Code Online (Sandbox Code Playgroud)