为什么"else"是计划中的特殊符号?它可以定义为程序吗?

612*_*50n 4 lisp scheme

我最近通过阅读SICP开始学习Scheme.在开篇章节中,它涉及条件,并谈到elsecond"特殊形式"中使用 - 我的理解被定义为"解释器"只知道".我的问题,为什么被else定义为"特殊形式"而不是一个程序?

如果我启动我的mit-scheme解释器,并键入:(else 1)它会引发错误.如果我定义类似的东西(define (myelse x) x),我可以cond像在表达式中使用它一样使用它:

(define (abs x)
    (cond ((< x 0) (- x))
        (myelse x)))
Run Code Online (Sandbox Code Playgroud)

那么为什么被else视为特殊的东西,而不是在方案本身中定义?

Bar*_*mar 7

如果它是普通变量,你可以这样做:

(set! else #f)
Run Code Online (Sandbox Code Playgroud)

然后cond依赖于else正在执行的子句的所有表达式将停止工作.