如何与时间解耦
流式程序
看待流的方法:即一下子处理了整个流。
准备例子:
第一个例子:将两个流相加。
第二个例子:运用到流上的所有项目
一个由1组成的无尽列表
如何定义整数:
定义斐波那契数列
何做到不要显式定义很多delay?
让整个底层都延时。让delay自动内建在语言之中。
这种语言叫做“正则序求值”(normal order)语言。而我们一直用的语言叫做application-order语言。即先求参数,再求值。而前者把整个参数放到函数中。
如果这样做了,cons也会自动变成cons-stream。有人这样做了。
但是,如果我们放弃了对时间的控制,虽然代码优雅,但是表达力下降。
比如,迭代函数会一直迭代下去。这是一个缺点。
正则序和副作用直接不能良好配合。不能建模具有局部状态的变量,又用正则序的方法解耦时间。
(据说haskell中的monad可以解决这个问题?)
比如:
在正则序的环境里:
如何处理这个问题?——放弃局部状态这件事