我正在努力学习计划。我的问题是如何在不使用“或”的情况下在方案中实现“或”2个元素。我试过(id (!A) B A
,但我得到A
两次,有人有不同的想法吗?
答案 0 :(得分:0)
标识符or
是一个语法关键字(又称“语法”),因此具有特殊的评估规则。 (就像'C'一样 - 语法很特殊。)要实现or
,你需要定义它的语法:
(define-syntax or
(syntax-rules ()
((or a b)
(let ((a-evaled a)) ;; only eval 'a' once
(if a-evaled a-evaled b)))))
[请注意,'syntax'通常不是初学者的主题。但是,您需要or
的语法。]