如何深入理解SICP中描述的信号流图?

时间:2012-04-01 15:51:07

标签: haskell stream scheme implicit sicp

SICP第3.5.3节 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5.3

Streams as signals部分,SICP通过反馈循环给出了Implicit style of definition的视听说明。但我想知道如何准确理解图表?什么是真正的优势,是否有任何背景知识?

再举个例子,不是在Scheme中,而是在Haskell中:

fibs = fix (scanl (+) 0 . (1:))
fibs = fix ((0:) . scanl (+) 1)

我们也可以绘制信号流图。我们如何利用这些图表?

感谢您的建议和信息!

2 个答案:

答案 0 :(得分:4)

对于图表的真实的视听说明,为什么不查看附带的视频?他们在here,讲座6A和6B。

至于图表的“真正优势”,它们是流处理的直观表示,不需要“背景知识”来理解它们,AFAIK这些图表的符号是SICP的特性的一部分通过阅读书籍并观看视频,您将了解所有关于它们的信息。

答案 1 :(得分:1)

要在评论中回答您的问题,

Prelude> let bs = 1:map (\n-> sum $ take (n+1) bs) ( map (`div`2) [1..])
Prelude> take 20 bs
[1,1,2,2,4,4,6,6,10,10,14,14,20,20,26,26,36,36,46,46]

Prelude> let as = 1:1:g 2 (drop 2 as) where g x ~(a:b) = x:x:g(x+a)b
Prelude> take 20 as
[1,1,2,2,4,4,6,6,10,10,14,14,20,20,26,26,36,36,46,46]

Prelude> take 20 $ map (\n-> sum $ take (n+1) as) $ map (`div`2) [0..]
[1,1,2,2,4,4,6,6,10,10,14,14,20,20,26,26,36,36,46,46]