SICP3.5.4的改进以及评论

原文

SICP3.5.4的改进以及评论_第1张图片
1.png
SICP3.5.4的改进以及评论_第2张图片
2.png

这里引入了延时参数的概念,我觉得纯粹是多余的,甚至破坏了美感。

原本的integral流积分函数已经很完备了,不需要为了这种“特殊情况”重写。

况且,输出的y,本身也是流,也就说明期本身具备延迟求值的特性。
而且,把输出流当作是流本身的“原料”,这种迭代的做法也是作者经常使用的。而且他还冠名为隐式定义流,这里不知道是疏忽还是为了用作例子,没有完全贯彻。

以下是改进的函数。

(define (solve f y0 dt)
    (define y 
        (cons-stream y0 
            (stream-cdr (integral (stream-map f y) y0 dt))))
    y)

过程都是参造流程图改进,cons-stream本身具备delay的特性,不需要重写integral函数。

3.png

结果与书本一致。

这里引发了一个思考,是否有必要额外引入这个延时参数的概念,是否必须写这样的“特殊函数”?

我自己的答案是否。delay的是我们创造cons-stream的元素,cons-stream在流里发挥着delay的效用,没必要在构建流时生硬地搬入“底层的”delay。

你可能感兴趣的:(SICP3.5.4的改进以及评论)