diff options
author | Martin Odersky <odersky@gmail.com> | 2007-11-26 19:20:12 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-11-26 19:20:12 +0000 |
commit | 090482dae2e111084a1ac2d2d58113388dbbbffe (patch) | |
tree | 2a048473c3acde9ebac02654806b3767ea635da9 /src | |
parent | e4d31aed1f5a15cd3da7e6ae4093160142625b77 (diff) | |
download | scala-090482dae2e111084a1ac2d2d58113388dbbbffe.tar.gz scala-090482dae2e111084a1ac2d2d58113388dbbbffe.tar.bz2 scala-090482dae2e111084a1ac2d2d58113388dbbbffe.zip |
List.transpose is now tailrecursive.
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/List.scala | 12 | ||||
-rw-r--r-- | src/library/scala/runtime/StringAdd.scala | 7 |
2 files changed, 9 insertions, 10 deletions
diff --git a/src/library/scala/List.scala b/src/library/scala/List.scala index 537f649a8a..00b9112807 100644 --- a/src/library/scala/List.scala +++ b/src/library/scala/List.scala @@ -354,9 +354,15 @@ object List { * @param xss the list of lists * @return the transposed list of lists */ - def transpose[A](xss: List[List[A]]): List[List[A]] = - if (xss.head.isEmpty) List() - else (xss map (xs => xs.head)) :: transpose(xss map (xs => xs.tail)) + def transpose[A](xss: List[List[A]]): List[List[A]] = { + val buf = new ListBuffer[List[A]] + var yss = xss + while (!yss.head.isEmpty) { + buf += (yss map (_.head)) + yss = (yss map (_.tail)) + } + buf.toList + } /** Lists with ordered elements are ordered implicit def list2ordered[a <% Ordered[a]](x: List[a]): Ordered[List[a]] = new Ordered[List[a]] { diff --git a/src/library/scala/runtime/StringAdd.scala b/src/library/scala/runtime/StringAdd.scala index a7da9a5d17..2ca64538d9 100644 --- a/src/library/scala/runtime/StringAdd.scala +++ b/src/library/scala/runtime/StringAdd.scala @@ -18,13 +18,6 @@ final class StringAdd(self: Any) { def +(other: String) = self.toString + other - /** Formats string according to given <code>locale</code> and - * <code>format</code> string. Formatstrings are as for - * <code>String.format</code> (@see java.lang.String.format) - */ - def format(locale: java.util.Locale, format: String): String = - String.format(locale, format, Array(self.asInstanceOf[Object])) - /** Formats string according to given <code>format</code> string. * Format strings are as for <code>String.format</code> * (@see java.lang.String.format). |