Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有这段方案代码:
(define (x . y) y) (x 1 2 3)
我知道它相当于:
'(1 2 3)
但我不明白为什么。
第一行代码是做什么的?
谢谢你。
根据5.2 定义(最后一个子句) ,第一行(define (x . y) y)等价于。(define x (lambda y y))
(define (x . y) y)
(define x (lambda y y))
并且(lambda y y)是一个程序;调用时,所有参数将存储在新分配的列表中。eglist可以定义为(define list (lambda xs xs)). (见4.1.4 程序形式参数的第二种形式。)
(lambda y y)
list
(define list (lambda xs xs))
所以(x 1 2 3)等价于(list 1 2 3)。
(x 1 2 3)
(list 1 2 3)