diff options
author | michelou <michelou@epfl.ch> | 2007-12-12 14:49:16 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2007-12-12 14:49:16 +0000 |
commit | 1822dfc8c0888420fd6d373b7a87bf4d471306a9 (patch) | |
tree | 20bf54a9837441ac389d0f913537c9aad99309dc | |
parent | 8586583b98b94a33ed426b33341fa489682795bf (diff) | |
download | scala-1822dfc8c0888420fd6d373b7a87bf4d471306a9.tar.gz scala-1822dfc8c0888420fd6d373b7a87bf4d471306a9.tar.bz2 scala-1822dfc8c0888420fd6d373b7a87bf4d471306a9.zip |
propagated fix #281
-rw-r--r-- | src/library/scala/Stream.scala | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/src/library/scala/Stream.scala b/src/library/scala/Stream.scala index fb8f5e92bd..a771e1d217 100644 --- a/src/library/scala/Stream.scala +++ b/src/library/scala/Stream.scala @@ -431,16 +431,9 @@ trait Stream[+A] extends Seq.Projection[A] { * @return <code>f(a<sub>0</sub>) ::: ... ::: f(a<sub>n</sub>)</code> if * this stream is <code>[a<sub>0</sub>, ..., a<sub>n</sub>]</code>. */ - override def flatMap[B](f: A => Iterable[B]): Stream[B] = { - var acc: Stream[B] = Stream.empty - var these = this - while (!these.isEmpty) { - val those = f(these.head) - if (!those.isEmpty) acc = acc append those.toStream - these = these.tail - } - acc - } + override def flatMap[B](f: A => Iterable[B]): Stream[B] = + if (isEmpty) Stream.empty + else Stream.fromIterator(f(head).elements) append (tail flatMap f) override def toStream = this |