Каково эксклюзивное или функционирует в схеме? Я попробовал xor
и ^
, но оба дают мне несвязанную ошибку локальной переменной.
Поиск с помощью Google ничего не нашел.
Я предлагаю вам использовать (not (equal? Foo bar))
, если не равно работает. Обратите внимание, что для вашей ситуации могут быть более быстрые компараторы, такие как eq?
Если вы имеете в виду побитовое xor двух целых чисел, то каждая схема имеет собственное имя (если есть), поскольку оно не входит ни в один стандарт. Например, в PLT есть эти побитовые функции , включая bitwise-xor
.
(Э-э, если вы говорите о логических значениях, то да, не
& или
это ...)
Насколько я могу судить из R6RS (последнее определение схемы), предопределенной операции «исключающее ИЛИ» нет. Однако xor
эквивалентно не равно
для логических значений, поэтому его действительно довольно легко определить самостоятельно, если для него нет встроенной функции.
Предполагая, что аргументы ограничены логическими значениями схемы #f
и #t
,
(define (xor a b)
(not (boolean=? a b)))
выполнит работу.
Ответ в другом стиле:
(define xor
(lambda (a b)
(cond
(a (not b))
(else b))))