有人可以帮我解释如何推理这个scala代码
lazy val y : Stream[Int] = 1 #:: (y map (_ + 1))
从1开始生成自然数列表?
答案 0 :(得分:3)
1 #:: whatever
中的位置值为1,因此我们知道y(0) = 1
。
在更大的位置,我们有y(n+1) = whatever(n)
。此处whatever
为y map (_+1)
,因此y(n+1) = (y map (_+1))(n)
。
我们要证明forall n. y(n) = n + 1
。
我们知道n = 0
,y(0) = 1
(y.map(_+1))(n)
只是y(n) + 1
。这就是地图的作用。因此,我们上面的公式变为y(n+1) = y(n) + 1
。
然后琐碎,如果我们知道y(n) = n+1
,那么y(n+1) = (n+1) + 1
。结果在下一级真实。我们通过归纳获得证据。