【问题标题】:Help understanding this implementation of cons and car in scheme using lambdas使用 lambdas 帮助理解方案中 cons 和 car 的这种实现
【发布时间】:2011-02-08 04:36:15
【问题描述】:

我的问题与以下代码有关:

 (define (cons. x y)
   (lambda (m) (m x y)))

 (define (car. z)
   (z (lambda (p q) p)))

我的问题是这段代码的实际工作方式。据我所知,缺点。正在返回一个在其范围内包含变量 x 和 y 的过程。车。然后从 cons 中获取返回的过程。并将其应用于另一个接受两个参数 p 和 q 并返回 p 的 lambda。我的困惑在于第二个 lambda,P 和 Q 的值究竟来自哪里?

【问题讨论】:

    标签: lambda scheme sicp


    【解决方案1】:

    变量pq是“cons cell”的两个元素;即,它们是cons. 中的xy。如果你运行(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,即“cons 单元格”的第一个元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      相关资源
      最近更新 更多