【发布时间】:2017-08-14 01:47:03
【问题描述】:
我正在阅读 r6rs(Revised6 Report on the Algorithmic Language Scheme),在“介绍”部分有一个总结:
“Scheme 是 Lisp 的第一个主要方言,用于区分过程与 lambda 表达式和符号,为所有变量使用单一的词法环境,并以相同的方式评估过程调用的运算符位置 作为操作数位置。”
我的问题是:
“区分过程与 lambda 表达式和符号”有什么好处?
什么是单一的词法环境? 我的理解是,由于词法范围,Scheme 中的所有内容都是“词法”,那里没有运行时范围,源代码中的位置/位置更多地意味着环境。
如何理解“以与操作数位置相同的方式评估过程调用的运算符位置”? 我的理解是运算符位置的符号被评估为操作数位置。例如:
(define test
(lambda (x)
((if (> x 0) + -) 1 2)))
“(if (> x 0) + -)”在算子位置,它的求值与其他操作数位置的求值相同。
【问题讨论】:
-
如果您对其他 Lisp 有一定的了解,比如 Common Lisp,这些陈述会更有意义。
标签: lambda scheme evaluation lexical r6rs