我可以简化以下Haskell lambda吗?

时间:2015-03-25 18:06:27

标签: haskell

我想使用合成或更高阶魔术来简化以下lambda,

(\a b -> if (b) then (not a) else a)

但我无法想到一个聪明的方法。你能帮帮我吗?

感谢。

2 个答案:

答案 0 :(得分:12)

让我们看一下真值表:

   a    b      f
------------+------- 
False False | False
False True  | True
True  False | True
True  True  | False

那太有趣了!只要输入不相同,f就是True。嗯...

答案 1 :(得分:3)

正如另一位用户所指出的,这是xor的一个例子,那么我们如何定义这个函数呢?

如果输入相等,则结果为false。 如果输入不相等,则结果为真。

\x y -> x /= y

编辑:评论员是对的,我的坏!我之前给出的定义不起作用。