【发布时间】:2011-01-30 00:53:32
【问题描述】:
我是 Haskell 的绝对新手,但我试图了解它是如何工作的。
我想编写自己的惰性整数列表,例如 [1,2,3,4,5...]。
对于我写的列表
ones = 1 : ones
尝试后,效果很好:
*Main> take 10 ones
[1,1,1,1,1,1,1,1,1,1]
我怎样才能对增加整数做同样的事情?
我试过了,但确实失败了:
int = 1 : head[ int + 1]
在那之后,我怎样才能制作一个将两个流相乘的方法?如:
mulstream s1 s2 = head[s1] * head[s2] : mulstream [tail s1] [tail s2]
【问题讨论】:
-
您可能对 () 和 [] 之间的区别感到困惑,因为如果您将所有 [] 替换为 (),您的最后一个示例(对于无限列表)有效。
标签: list haskell stream lazy-evaluation