sicp - 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!
会这样。
解决方案
推荐阅读
- daemon - 如何停止 janus-gateway 后台模式?
- javascript - Django 使用 Json 创建雷达图
- java - 尝试使用 Java JGit 从 Github 中提取日志
- flutter - 状态栏的高度
- amazon-web-services - 在 Terraform 中,如何从对象数组中输出列表?
- node.js - 导入 fs 模块时出现“ReferenceError:未定义要求”
- reactjs - 执行 create-react-app 以创建新的反应应用程序时出错
- sql - PostgreSQL 将表列结果保存到变量中
- xml - 有没有人可以帮助我理解 Word 表单上 XML 映射的 VB 代码?
- azure - 将用户添加到 azure devops 项目