正如@sibi所提到的,你正在犯语法错误.但是你正在做的是通过模式匹配来实现的.
exclusiveDisjunction :: Bool -> Bool -> Bool exclusiveDisjunction True True = False exclusiveDisjunction True False = True exclusiveDisjunction False True = True exclusiveDisjunction False False = False
这可以简化为
exclusiveDisjunction :: Bool -> Bool -> Bool exclusiveDisjunction True True = False exclusiveDisjunction True False = True exclusiveDisjunction _ a = a
已经有了很好的答案,但我希望从我的角度展示如何以更清晰的方式实现这一点.
exclusiveDisjunction :: Bool -> Bool -> Bool exclusiveDisjunction True = not exclusiveDisjunction False = id
最短的.
exclusiveDisjunction :: Bool -> Bool -> Bool exclusiveDisjunction = (/=)