Given a lazy val:
scala> lazy val y = {println("Y!"); 200}
y: Int = <lazy>
I tried to put y into a Stream - to find out if it would be eagerly or lazily evaluated.
scala> Stream(100, y)
Y!
res4: scala.collection.immutable.Stream[Int] = Stream(100, ?)
Clearly it's eagerly evaluated.
Besides the following, how can I create a Stream that lazily evaluates its members?
scala> Stream[() => Int](() => 100, () => 200)
res18: scala.collection.immutable.Stream[() => Int] = Stream(<function0>, ?)
scala> res18.map(_())
res19: scala.collection.immutable.Stream[Int] = Stream(100, ?)
scala> res19.last
res20: Int = 200
scala> res19
res21: scala.collection.immutable.Stream[Int] = Stream(100, 200)