4tl*_*ulz 6 lambda scheme sicp
我的问题涉及以下代码:
(define (cons. x y)
(lambda (m) (m x y)))
(define (car. z)
(z (lambda (p q) p)))
Run Code Online (Sandbox Code Playgroud)
我的问题是这个代码实际上是如何工作的.据我所知,利弊.正在返回一个包含其范围内的变量x和y的过程.汽车.然后从cons中获取返回的过程.并将其应用于另一个带有两个参数p和q并返回p的lambda.我的困惑在于第二个lambda,P和Q的值究竟来自哪里?
变量p和q是"cons单元"的两个元件; 也就是说,他们是x和y在cons..如果你跑(car. (cons. 1 2)),你得到(扩展cons.):
(car. (lambda (m) (m 1 2))
变成(使用定义car.):
((lambda (m) (m 1 2)) (lambda (p q) p))
将参数插入第一个体中lambda,您得到:
((lambda (p q) p) 1 2)
像这样的另一个替代品1,是"利弊细胞"的第一个元素.