私は Scala のストリームで遊んでいますが、そのアイデアを理解できるかどうかわかりません。次のコードを考えてみましょう
def fun(s: Stream[Int]): Stream[Int] = Stream.cons(s.head, fun(s.tail))
これを実行する
val f = fun(Stream.from(7))
f take 14 foreach println
との結果
7 8 9 10 ... up to 20
私はこれを理解しているとしましょう。
ここで、コードを少し変更します (head に 2 を追加)
def fun(s: Stream[Int]): Stream[Int] = Stream.cons(s.head + 2, fun(s.tail))
結果は
9 10 11 ... up to 22
改めて、わかったと思います。問題は次の例から始まります (d
def fun(s: Stream[Int]): Stream[Int] = Stream.cons(s.head / 2, fun(s.tail))
3 4 4 5 5 6 6 7 7 8 8 9 9 10
これはわかりません。なぜこのような結果になるのか説明してください。同様に、減算も期待どおりに動作しません
def fun(s: Stream[Int]): Stream[Int] = Stream.cons(s.head - 2, fun(s.tail))
出力
5 6 7 8 9 10 ... up to 18