如何与时间解耦
流式程序
看待流的方法:即一下子处理了整个流。

准备例子:
第一个例子:将两个流相加。

第二个例子:运用到流上的所有项目

一个由1组成的无尽列表

如何定义整数:

定义斐波那契数列

何做到不要显式定义很多delay?
让整个底层都延时。让delay自动内建在语言之中。
这种语言叫做“正则序求值”(normal order)语言。而我们一直用的语言叫做application-order语言。即先求参数,再求值。而前者把整个参数放到函数中。
如果这样做了,cons也会自动变成cons-stream。有人这样做了。
但是,如果我们放弃了对时间的控制,虽然代码优雅,但是表达力下降。
比如,迭代函数会一直迭代下去。这是一个缺点。
正则序和副作用直接不能良好配合。不能建模具有局部状态的变量,又用正则序的方法解耦时间。
(据说haskell中的monad可以解决这个问题?)
比如:
在正则序的环境里:


如何处理这个问题?——放弃局部状态这件事
本文探讨了如何通过流式编程实现与时间的解耦,介绍了正则序求值语言的特点及其与应用序求值语言的区别。同时,讨论了在正则序环境下保持局部状态的挑战,并给出了函数式编程作为一种解决方案。
379

被折叠的 条评论
为什么被折叠?



