2

我有这段方案代码:

(define (x . y) y)
(x 1 2 3)

我知道它相当于:

'(1 2 3)

但我不明白为什么。

第一行代码是做什么的?

谢谢你。

4

1 回答 1

3

根据5.2 定义(最后一个子句) ,第一行(define (x . y) y)等价于。(define x (lambda y y))

并且(lambda y y)是一个程序;调用时,所有参数将存储在新分配的列表中。eglist可以定义为(define list (lambda xs xs)). (见4.1.4 程序形式参数的第二种形式。)

所以(x 1 2 3)等价于(list 1 2 3)

于 2012-04-17T11:20:59.270 回答