2014-03-31 3 views
-2
(define xor 
    (lambda (x y) 
    (if (boolean=? x y) 
     #f 
     #t))) 

Как это работает? Я не понимаю, чтоXOR in Racket, я не понимаю, как это работает

+0

Ну ... так как я никогда не видел код ракетка раньше (выглядит как LISP), и учитывая традиционное определение XOR = 'х && у ||! ! x && y' ... тогда кажется, что это сработает (так как я бы предположил, что 'boolean =?' будет проверять, чтобы оба были истинными - и я мог бы быть ужасно ошибочным в этом). – Makoto

+0

Ты мне не поможешь. – user3466525

+0

Возможно, вы захотите прочитать контрольный список [SO question checklist] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist), чтобы улучшить свой вопрос. Например, будет сложно ответить на ваш вопрос, не зная, что вы пробовали, например. –

ответ

4

Давайте посмотрим на xor «s 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 

Другими словами: если оба x и y равны, то xor ложно. Но если x и y различны, то верно xor. И это именно то, что говорит эта схема код:

(if (boolean=? x y) ; are x and y equal? 
    #f    ; then xor is false 
    #t)    ; otherwise xor is true 
Смежные вопросы