ScalaStreamsを使用した次のコードが機能しない理由を理解しようとしています。
def main(args: Array[String]): Unit = {
lazy val y : SimNumericStream = y.shift
y.scalstream.take(10).print
}
class SimNumericStream( ss : Stream[Double] ) {
lazy val scalstream = ss
lazy val shift = new SimNumericStream( 0 #:: scalstream )
}
まだ交換
lazy val y : SimNumericStream = y.shift
に
lazy val y : SimNumericStream = new SimNumericStream( 0 #:: y.scalstream )
うまく動作します。
ストリームが自己参照である場合に遅延評価を中断することなく、関数内のストリームに対する操作をまとめることができるソリューションを探しています。