练习3-52
原文
Exercise 3.52. Consider the sequence of expressions
(define sum 0)
(define (accum x) (set! sum (+ x sum)) sum)
(define seq (stream-map accum (stream-enumerate-interval 1 20)))
(define y (stream-filter even? seq))
(define z (stream-filter (lambda (x) (= (remainder x 5) 0)) seq))
(stream-ref y 7)
(display-stream z)
What is the value of sum after each of the above expressions is evaluated? What is the printed response to evaluating the stream-ref and display-stream expressions? Would these responses differ if we had implemented (delay ) simply as (lambda () ) without using the optimization provided by memo-proc ? Explain.
代码
(define seq (stream-map accum (stream-enumerate-interval 1 20)))
sum
;Value: 1
(define y (stream-filter even? seq))
sum
;Value: 6
(define z (stream-filter (lambda (x) (= (remainder x 5) 0)) seq))
(stream-ref y 7)
;Value: 136
感谢访问,希望对您有所帮助。 欢迎关注或收藏、评论或点赞。
为使本文得到斧正和提问,转载请注明出处:
http://blog.youkuaiyun.com/nomasp
版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.youkuaiyun.com/nomasp
本文探讨了在Scheme语言中使用流和延迟求值的概念,通过一系列表达式的执行,展示了sum变量的变化过程以及stream-ref和display-stream表达式的结果。同时,讨论了如果delay的实现没有使用memo-proc优化,结果是否会有所不同。
949

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



