我怎样才能以不同的方式在计划中实施“或”

时间:2013-10-17 17:15:42

标签: scheme

我正在努力学习计划。我的问题是如何在不使用“或”的情况下在方案中实现“或”2个元素。我试过(id (!A) B A,但我得到A两次,有人有不同的想法吗?

1 个答案:

答案 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的语法。]