首页 > 解决方案 > SICP 第 3 章:当第一个参数是子表达式时,`set!` 如何工作

问题描述

我不明白set!它的第一个参数是子表达式时的行为。例如,(set! (sub-expression x) y)做什么?

我问这个的主要原因是因为依赖于运行 a on会改变自己append!的事实。set!(sub-expression x)x

(define (append! x y)
    (set-cdr! (last-pair x) y)
     x))

其中last-pair定义为:

(define (last-pair x)
  (if (null? (cdr x)) x (last-pair (cdr x))))

我似乎无法理解为什么set-cdr!会这样。

标签: sicpmit-scheme

解决方案


推荐阅读