使用lambdas帮助理解cons和car-in方案的实现
我的问题涉及以下准则:使用lambdas帮助理解cons和car-in方案的实现,lambda,scheme,sicp,Lambda,Scheme,Sicp,我的问题涉及以下准则: (define (cons. x y) (lambda (m) (m x y))) (define (car. z) (z (lambda (p q) p))) 我的问题是这段代码实际上是如何工作的。据我所知。正在返回一个过程,该过程包含其范围内的变量x和y。汽车然后从cons获取返回的过程。并将其应用于另一个lambda,它接受两个参数p和q并返回p。我的困惑在于第二个lambda,P和Q的值到底从哪里来?变量P和Q是“cons单元格”的两个元素;i
(define (cons. x y)
(lambda (m) (m x y)))
(define (car. z)
(z (lambda (p q) p)))
我的问题是这段代码实际上是如何工作的。据我所知。正在返回一个过程,该过程包含其范围内的变量x和y。汽车然后从cons获取返回的过程。并将其应用于另一个lambda,它接受两个参数p和q并返回p。我的困惑在于第二个lambda,P和Q的值到底从哪里来?
变量
P
和Q
是“cons单元格”的两个元素;i、 例如,它们是cons.
中的x
和y
。如果您运行(car.(cons.12))
,您将得到(扩展cons.
):
(汽车(lambda(m)(m12))
它变成(使用汽车的定义。
):
((lambda(m)(m12))(lambda(pq)p))
将参数插入第一个lambda
的主体中,可以得到:
((lambda(pq)p)12)
另一个类似的替换为“cons单元格”的第一个元素1