So, if 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
?
你可以写xor
简单地作为
xor a b = a /= b
also or
可以简化
or True _ = True
or False b = b
为了好玩,您可以用 nand 定义所有逻辑函数。
nand :: Bool -> Bool -> Bool
nand True True = False
nand _ _ = True
not
is easy
not a = nand a a
and
需要两个门
and a b = not (nand a b)
or
,需要三个
or a b = nand (not a) (not b)
and, xor
需要四个
xor a b = let z = nand a b in nand (nand z a) (nand z b)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)