logic - 为什么 AND、OR 会按预期工作,但 XOR 会显示错误?
问题描述
(define-syntax e.g.
(syntax-rules (===>)
((e.g. proposition)
(unless proposition
(error "invalid proposition: "'proposition)))
((e.g. proposition ===> value)
(let ((result proposition))
(unless (equal? proposition value)
(error "invalid proposition: "'proposition
", expected "value", got "result))))))
(define my-eval
(let ((ns (make-base-namespace)))
(lambda (expr) (eval expr ns))))
(e.g. (my-eval '(and #t #t)) ===> #t)
(e.g. (my-eval '(and #t #f)) ===> #f)
(e.g. (my-eval '(or #t #f)) ===> #t)
(e.g. (my-eval '(or #f #f)) ===> #f)
(e.g. (my-eval '(xor #t #t)) ===> #f)
(e.g. (my-eval '(xor #t #f)) ===> #t)
它适用于 AND,OR 但适用于 XOR:
异或:未定义;不能在定义之前引用标识符。
即使 REPL 中的强硬似乎也能正常工作:
(异或#t#f)
吨
解决方案
您需要将racket/bool
提供. 一种方法是在测试之前运行。xor
my-eval
(my-eval '(require racket/bool))
xor
推荐阅读
- python - 基于可用 RAM 使用 python/celery/任何其他任务队列调度任务
- android - 防止viewpager中的特定片段刷新
- dpdk - DPDK中使用的IP地址和MAC地址
- swift - 如何解决 Swift 中 oAuth 的 Firebase 错误。FIRAuthError 域代码=17999
- javascript - 包含 JSP/JS 的 Python Beautiful Soup 抓取页面
- c# - ZXing .Net - 无法解码/读取图像中的任何条形码
- webpack - 未知属性“优化”
- jsch - 从 SSH 服务器到目标主机的安全隧道
- c# - 调用 wcf 方法时通知 rabbitmq 队列订阅者
- python - 如何在类内部但在方法外部引用python类变量?