summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-11-26 19:20:12 +0000
committerMartin Odersky <odersky@gmail.com>2007-11-26 19:20:12 +0000
commit090482dae2e111084a1ac2d2d58113388dbbbffe (patch)
tree2a048473c3acde9ebac02654806b3767ea635da9 /src/library
parente4d31aed1f5a15cd3da7e6ae4093160142625b77 (diff)
downloadscala-090482dae2e111084a1ac2d2d58113388dbbbffe.tar.gz
scala-090482dae2e111084a1ac2d2d58113388dbbbffe.tar.bz2
scala-090482dae2e111084a1ac2d2d58113388dbbbffe.zip
List.transpose is now tailrecursive.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/List.scala12
-rw-r--r--src/library/scala/runtime/StringAdd.scala7
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).