所以,如果xor
返回True
当且仅当其中一个操作数为True
时才会返回xor :: Bool -> Bool -> Bool
xor True True = False
xor True False = True
xor False True = True
xor False False = False
:
or
我的问题是:
True
是否相似,但如果其中一个或两个操作数为True
,则返回Operator:=xlFilterCellColor
?
答案 0 :(得分:4)
您可以简单地将xor
写为
xor a b = a /= b
也可以简化or
or True _ = True
or False b = b
为了好玩,您可以用nand来定义所有逻辑函数。
nand :: Bool -> Bool -> Bool
nand True True = False
nand _ _ = True
not
很简单
not a = nand a a
and
需要两个门
and a b = not (nand a b)
or
,需要三个
or a b = nand (not a) (not b)
和,xor
需要四个
xor a b = let z = nand a b in nand (nand z a) (nand z b)