博主头像
zzh

ワクワク

分类 SICP学习记录 下的文章

SICP第四章&&第五章

第四章:元语言抽象序言:​ 元语言抽象就是建立新的语言。不仅可以设计新的语言,还可以通过构造求值器的方式实现这些语言。对于求值器,这也是一个过程,在应用这个语言的一个表达式时,能够执行表达式所要求的动作​ 总的来说:求值器决定了一个程序设计语言中各种表达式的意义,而他本身就是另一个程序。4.1:元语言求值器​ 把lisp语言求值器实现为一个lisp程序。可以用这个求值器来求值li

第三章:模块化,对象与状态

第三章:模块化,对象与状态导言:​ 构造大型程序的一种很有力的构造策略,就是去模拟真实世界的物理系统,基于被模拟系统的结构去设计自己程序的结构。本章主要提出了两种不同的对世界的看法,由此也引申出了两种组织程序结构的策略。​ 第一种是把注意力集中到“对象”上,把一个大型系统看成一大批的对象,其行为或状态随时间会发生变化。另一种方法是把注意力集中到流过系统的信息流上,就如同处理一个信号处理

流的实现,操作与部分应用

#lang sicp #| 流的实现,在后面发现这样定义是不行的,会导致无限递归,内存溢出。可能是因为racket对表达式应用序求值的问题 参考https://www.cnblogs.com/RChen/archive/2012/05/11/2495281.html的方法,重新定义了流的实现 (define (cons-stream a b) (cons a (delay b))) |#

3.3.5约束的传播(代码加注释)

#lang sicp #| 约束系统有两个对象,约束和连接器。 假定支持以下操作: has-value:报告连接器是否有值 get-value:得到连接器的值 set-value:设置连接器的值 forget-value:连接器忘记原本的值 connnect:通知连接器参与一个新的约束 inform-about-value:通知各个约束连接器有新值 inform-about-no-value:通