Skip to content

Tuple2.zipped not lazy enough for Streams #2634

Closed
@scabug

Description

@scabug
Welcome to Scala version 2.8.0.Beta1-RC1 (Java HotSpot(TM) Client VM, Java 1.6.0_11).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val fib: Stream[Int] = 1 #:: 1 #:: fib.zip(fib.tail).map { case (a,b) => a + b }
fib: Stream[Int] = Stream(1, ?)

scala> fib take 10 toList
res1: List[Int] = List(1, 1, 2, 3, 5, 8, 13, 21, 34, 55)

scala> val fib: Stream[Int] = 1 #:: 1 #:: (fib, fib.tail).zipped.map(_ + _)
fib: Stream[Int] = Stream(1, ?)

scala> fib take 10 toList
java.lang.StackOverflowError
        at scala.collection.mutable.LazyBuilder.<init>(LazyBuilder.scala:23)
        at scala.collection.immutable.Stream$$StreamBuilder.<init>(Stream.scala:427)
        at scala.collection.immutable.Stream$$.newBuilder(Stream.scala:418)
        at scala.collection.generic.GenericTraversableTemplate$$class.genericBuilder(GenericTraversableTemplate.scala:34)
        at scala.collection.immutable.Stream.genericBuilder(Stream.scala:41)
        at scala.collection.generic.TraversableFactory$$GenericCanBuildFrom.apply(TraversableFactory.scala:22)
        at scala.collection.generic.TraversableFactory$$GenericCanBuildFrom.apply(TraversableFactory.scala:21)
        at scala.Tuple2$$Zipped.map(Tuple2.scala:54)
        at $$anonfun$$1$$$$anonfun$$apply$$1.apply(<console>:4)
        at $$anonfun$$1$$$$anonfun$$apply$$1.apply(<console>:4)
        at scala.collection.immutable.Stream$$Cons.tail(Stream.scala:489)
        at scala.collection.immutable.Stream$$Cons.tail(Stream.scala:483)
        at scala.collection.LinearSeqLike$$$$anon$$1.next(LinearSeqLike.scala:72)
        at scala.Tuple2$$Zipped$$$$anonfun$$map$$1.apply(Tuple2.scala:59)
        at scala.collection.immutable.Stream.foreach(Stream.scala:191)
        at scala.Tuple2$$Zipped.map(Tuple2.scala:57)
        at $$anonfun$$1$$$$anonfun$$apply$$1.apply(<console>:4)
        at $$anonfun$$1$$$$anonfun$$apply$$1.apply(<console>:4)
        at scala.collection.immutable.Stream$$Cons.tail(Stream.scala:489)
        at scala.collection.immutable.Stream$$Cons.tail(Stream.scala:483)
        at scala.collection.LinearSeqLike$$$$anon$$1.next(LinearSeqLike.scala:72)
        at scala.Tuple2$$Zipped$$$$anonfun$$map$$1.apply(Tuple2.scala:59)
        at scala.collection.immutable.Stream.foreach(Stream.scala:191)
        at scala.Tuple2$$Zipped.map(Tuple2.scala:57)
        at $$anonfun$$1$$$$anonfun$$apply$$1.apply(<console>:4)
        at $$anonfun$$1$$$$anonfun$$apply$$1.apply(<console>:4)
        at scala.collection.immutable.Stream$$Cons.tail(Stream.scala:489)
        at scala.collection.immutable.Stream$$Cons.tail(Stream.scala:483)
        at scala.collection.LinearSeqLike$$$$anon$$1.next(LinearSeqLike.scala:72)
        at scala.Tuple2$$Zipped$$$$anonfun$$map$$1.apply(Tuple2.scala:59)
        at scala.collection.immutable.Stream.foreach(Stream.scala:191)
        at scala.Tuple2$$Zipped.map(Tuple2.scala:57)
        at $$anonfun$$1$$$$anonfun$$apply$$1.apply(<console>:4)
        at $$anonfun$$1$$$$anonfun$$apply$$1.apply(<console>:4)
        at scala.collection.immutable.Stream$$Cons.tail(Stream.scala:489)
        at scala.collection.immutable.Stream$$Cons.tail(Stream.scala:483)
        at scala.collection.LinearSeqLike$$$$anon$$1.next(Linea...

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions