如Wikipedia的文章所解释,begin
在计划中是可使用诸如lambda <<>/code>等更根本形式的图书馆形式。
但是,你如何改写<条码>begin,特别是考虑到以下内容?
x
===> error: undefined identifier: x
(begin (define x 28) x)
===> 28
x
===> 28
如Wikipedia的文章所解释,begin
在计划中是可使用诸如lambda <<>/code>等更根本形式的图书馆形式。
但是,你如何改写<条码>begin,特别是考虑到以下内容?
x
===> error: undefined identifier: x
(begin (define x 28) x)
===> 28
x
===> 28
我们不能。 这正是<代码>begin有两个作用:一个是顺序排列副作用表述,另一个是将其用于“简单”宏观结果。 您可以使用<代码>begin,其定义如上所示,是第二种特征的结果,你不能书写。
如果你真的想听从整个故事,那么你将
总之,你可以说,R5RS在将<代码>begin归类为“library syntax”方面是错误的,因为它可以在图书馆中加以界定,但甚至由于R5RS将“library syntax”界定为“衍生表达”。 因此,真正的错误点是,在其他地方(就定义而言)实施<条码>的“原始>条码>两面。
请注意,R6RS澄清了整个交易:begin
的两种面孔是明确的,现在是核心语言的一部分,不是“图书馆形式”,甚至不是衍生形式。
仍然欢迎你尝试撰写一份能够发挥其首要作用的文件:顺序。
(define-syntax sequencing
(syntax-rules ()
[(_ expression) expression]
[(_ expression expressions ...)
((lambda (ignored) (sequencing expressions ...)) expression)]))
这里是我从这个岗位上来的。 如果你是,你可以提供较好的背景。