我最近通过阅读 SICP 开始学习 Scheme。在第一章中,它讨论了条件语句,并讨论了在 cond
“特殊形式”中使用 else
- 在我看来,它被定义为“解释器的东西”知道”。我的问题是,为什么 else
被定义为“特殊形式”而不是过程?
如果我启动我的 mit-scheme 解释器,并输入:(else 1)
它会引发错误。如果我定义类似 (define (myelse x) x)
的内容,我可以像在 cond
表达式中使用它一样使用它,例如:
(define (abs x)
(cond ((< x 0) (- x))
(myelse x)))
那么为什么 else
被视为特殊的东西,而不是在方案本身中定义?
最佳答案
如果它是一个普通变量,你可以这样做:
(set! else #f)
然后所有依赖于正在执行的 else
子句的 cond
表达式将停止工作。
关于lisp - 为什么 "else"是scheme中的特殊符号?它可以定义为一个程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17759178/