计算机程序的构造和解释(笔记)
3.5 流(stream )
这节有点像信号与系统上的课
流:一个流也是一个序列,以这种序列去表示被模拟函数随着时间变化的历史。x(t)
类似之前上的matlab,流的实现需要一个延时求值的技术。
同时,c++中的流可以参照这里的一个博客C++流的概念
3.5.1 流作为延时的表
利用流,我们可以实现一个比较好的性质:程序既可以像序列操作那么优雅,同时又能
得到递增计算的效率。
流实现的行为方式
-
- delay和force的实现
(delay ⟨exp⟩)
// 是下面的语法糖 syntactic sugar
(lambda () ⟨exp⟩)
(define (force delayed-object) (delayed-object))
3.5.2 无穷流
也即定义一个无限无穷长的流,在函数式语音才可以达到
十分强大
(define (integers-starting-from n)
(cons-stream n (integers-starting-from (+ n 1))))
(define integers (integers-starting-from 1))
- 隐式地定义流
3.5.3 流计算模式的使用
3.5.4 流和延时求值
3.5.5 函数式程序的模块化和对象的模块
这本书后面的相对难理解一点,同时因为时间的关系。
第一次看书就暂且到这里,以后有机会在补上后续。。。
未完,待续。。。)