如何解决SICP第3章:当set!的第一个争论是子表达时,它是如何工作的
当set!
的第一个参数是子表达式时,我不理解其行为。例如,(set! (sub-expression x) y)
会做什么?
我问这的主要原因是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!
为何如此工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。