import Predef.{augmentString => _, wrapString => _, _} import scala.reflect.ClassTag object Test { import strawman.collections._ import CollectionStrawMan5._ def seqOps(xs: Seq[Int]) = { val x1 = xs.foldLeft("")(_ + _) val y1: String = x1 val x2 = xs.foldRight("")(_ + _) val y2: String = x2 val x3 = xs.indexWhere(_ % 2 == 0) val y3: Int = x3 val x4 = xs.head val y4: Int = x4 val x5 = xs.to(List) val y5: List[Int] = x5 val (xs6, xs7) = xs.partition(_ % 2 == 0) val ys6: Seq[Int] = xs6 val ys7: Seq[Int] = xs7 val xs8 = xs.drop(2) val ys8: Seq[Int] = xs8 val xs9 = xs.map(_ >= 0) val ys9: Seq[Boolean] = xs9 val xs10 = xs.flatMap(x => Cons(x, Cons(-x, Nil))) val ys10: Seq[Int] = xs10 val xs11 = xs ++ xs val ys11: Seq[Int] = xs11 val xs12 = xs ++ Nil val ys12: Seq[Int] = xs12 val xs13 = Nil ++ xs val ys13: Seq[Int] = xs13 val xs14 = xs ++ Cons("a", Nil) val ys14: Seq[Any] = xs14 val xs15 = xs.zip(xs9) val ys15: Seq[(Int, Boolean)] = xs15 val xs16 = xs.reverse val ys16: Seq[Int] = xs16 println("-------") println(x1) println(x2) println(x3) println(x4) println(x5) println(xs6) println(xs7) println(xs8) println(xs9) println(xs10) println(xs11) println(xs12) println(xs13) println(xs14) println(xs15) println(xs16) } def viewOps(xs: View[Int]) = { val x1 = xs.foldLeft("")(_ + _) val y1: String = x1 val x2 = xs.foldRight("")(_ + _) val y2: String = x2 val x3 = xs.indexWhere(_ % 2 == 0) val y3: Int = x3 val x4 = xs.head val y4: Int = x4 val x5 = xs.to(List) val y5: List[Int] = x5 val (xs6, xs7) = xs.partition(_ % 2 == 0) val ys6: View[Int] = xs6 val ys7: View[Int] = xs7 val xs8 = xs.drop(2) val ys8: View[Int] = xs8 val xs9 = xs.map(_ >= 0) val ys9: View[Boolean] = xs9 val xs10 = xs.flatMap(x => Cons(x, Cons(-x, Nil))) val ys10: View[Int] = xs10 val xs11 = xs ++ xs val ys11: View[Int] = xs11 val xs12 = xs ++ Nil val ys12: View[Int] = xs12 val xs13 = Nil ++ xs val ys13: List[Int] = xs13 val xs14 = xs ++ Cons("a", Nil) val ys14: View[Any] = xs14 val xs15 = xs.zip(xs9) val ys15: View[(Int, Boolean)] = xs15 println("-------") println(x1) println(x2) println(x3) println(x4) println(x5) println(xs6.to(List)) println(xs7.to(List)) println(xs8.to(List)) println(xs9.to(List)) println(xs10.to(List)) println(xs11.to(List)) println(xs12.to(List)) println(xs13.to(List)) println(xs14.to(List)) println(xs15.to(List)) } def stringOps(xs: String) = { val x1 = xs.foldLeft("")(_ + _) val y1: String = x1 val x2 = xs.foldRight("")(_ + _) val y2: String = x2 val x3 = xs.indexWhere(_ % 2 == 0) val y3: Int = x3 val x4 = xs.head val y4: Int = x4 val x5 = xs.to(List) val y5: List[Char] = x5 val (xs6, xs7) = xs.partition(_ % 2 == 0) val ys6: String = xs6 val ys7: String = xs7 val xs8 = xs.drop(2) val ys8: String = xs8 val xs9 = xs.map(_ + 1) // !!! need a language change to make this work without the : Char val ys9: Seq[Int] = xs9 val xs9a = xs.map(_.toUpper) // !!! need a language change to make this work without the : Char val ys9a: String = xs9a val xs10 = xs.flatMap((x: Char) => s"$x,$x") val ys10: String = xs10 val xs11 = xs ++ xs val ys11: String = xs11 val xs11a = xs ++ List('x', 'y') // Cons('x', Cons('y', Nil)) val ys11a: String = xs11a val xs12 = xs ++ Nil val ys12: String = xs12 val xs13 = Nil ++ xs.iterator val ys13: List[Char] = xs13 val xs14 = xs ++ Cons("xyz", Nil) val ys14: Seq[Any] = xs14 val xs15 = xs.zip(xs9) val ys15: Seq[(Char, Int)] = xs15 println("-------") println(x1) println(x2) println(x3) println(x4) println(x5) println(xs6) println(xs7) println(xs8) println(xs9) println(xs9a) println(xs10) println(xs11) println(xs11a) println(xs12) println(xs13) println(xs14) println(xs15) } def main(args: Array[String]) = { val ints = Cons(1, Cons(2, Cons(3, Nil))) val intsBuf = ints.to(ArrayBuffer) val intsView = ints.view seqOps(ints) seqOps(intsBuf) viewOps(intsView) stringOps("abc") } }