-2
(define xor
(lambda (x y)
(if (boolean=? x y)
#f
#t)))
Как это работает? Я не понимаю, чтоXOR in Racket, я не понимаю, как это работает
(define xor
(lambda (x y)
(if (boolean=? x y)
#f
#t)))
Как это работает? Я не понимаю, чтоXOR in Racket, я не понимаю, как это работает
Давайте посмотрим на 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
Ну ... так как я никогда не видел код ракетка раньше (выглядит как LISP), и учитывая традиционное определение XOR = 'х && у ||! ! x && y' ... тогда кажется, что это сработает (так как я бы предположил, что 'boolean =?' будет проверять, чтобы оба были истинными - и я мог бы быть ужасно ошибочным в этом). – Makoto
Ты мне не поможешь. – user3466525
Возможно, вы захотите прочитать контрольный список [SO question checklist] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist), чтобы улучшить свой вопрос. Например, будет сложно ответить на ваш вопрос, не зная, что вы пробовали, например. –