在Racket的XOR,我不明白它是如何工作的

时间:2014-03-31 22:58:25

标签: scheme racket boolean-logic xor

(define xor
  (lambda (x y) 
    (if (boolean=? x y) 
        #f 
        #t)))

它是如何工作的? 我不明白

1 个答案:

答案 0 :(得分:4)

让我们来看看xor' truth table

x xor y
T  F  T             ; x and y are both true,  x xor y is false
T  T  F             ; x and y are different,  x xor y is true
F  T  T             ; x and y are different,  x xor y is true
F  F  F             ; x and y are both false, x xor y is false

换句话说:如果xy都相同,则xor为false。但如果xy不同,则xor为真。而这正是这个Scheme代码所说的:

(if (boolean=? x y) ; are x and y equal?
  #f                ; then xor is false
  #t)               ; otherwise xor is true