summaryrefslogtreecommitdiff
path: root/src/library/scala/Tuple2.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2009-11-25 15:48:19 +0000
committerAdriaan Moors <adriaan.moors@epfl.ch>2009-11-25 15:48:19 +0000
commita3aa801a5181da49ec12164d54782e9d61359dfd (patch)
tree08005f0cd1152dd1a472c456f14fdbc7513720bc /src/library/scala/Tuple2.scala
parentf1b417f10c1e7f210f5c4782bd8ac0990169f965 (diff)
downloadscala-a3aa801a5181da49ec12164d54782e9d61359dfd.tar.gz
scala-a3aa801a5181da49ec12164d54782e9d61359dfd.tar.bz2
scala-a3aa801a5181da49ec12164d54782e9d61359dfd.zip
quick fix for #2673: relaxed zipped on Tuple2/T...
quick fix for #2673: relaxed zipped on Tuple2/Tuple3 (back to using A => B for constraint instead of A <%< B)
Diffstat (limited to 'src/library/scala/Tuple2.scala')
-rw-r--r--src/library/scala/Tuple2.scala20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/library/scala/Tuple2.scala b/src/library/scala/Tuple2.scala
index 94ccc4c3c3..f558826150 100644
--- a/src/library/scala/Tuple2.scala
+++ b/src/library/scala/Tuple2.scala
@@ -12,7 +12,7 @@
package scala
-import scala.collection.{ TraversableLike, IterableLike }
+import scala.collection.{TraversableLike, IterableLike}
import scala.collection.generic.CanBuildFrom
@@ -29,10 +29,8 @@ case class Tuple2[+T1, +T2](_1:T1, _2:T2) extends Product2[T1, T2] {
/** Swap the elements of the tuple */
def swap: Tuple2[T2,T1] = Tuple2(_2, _1)
-// TODO: probably loosen zip and zipped from <:< to <%<
-
- def zip[Repr1, El1, El2, To](implicit w1: T1 <:< TraversableLike[El1, Repr1],
- w2: T2 <:< Iterable[El2],
+ def zip[Repr1, El1, El2, To](implicit w1: T1 => TraversableLike[El1, Repr1],
+ w2: T2 => Iterable[El2],
cbf1: CanBuildFrom[Repr1, (El1, El2), To]): To = {
val coll1: TraversableLike[El1, Repr1] = _1
val coll2: Iterable[El2] = _2
@@ -46,19 +44,19 @@ case class Tuple2[+T1, +T2](_1:T1, _2:T2) extends Product2[T1, T2] {
b1.result
}
- def zipped[Repr1, El1, Repr2, El2](implicit w1: T1 <:< TraversableLike[El1, Repr1], w2: T2 <:< IterableLike[El2, Repr2]): Zipped[Repr1, El1, Repr2, El2]
- = new Zipped[Repr1, El1, Repr2, El2](_1, _2)
+ def zipped[Repr1, El1, Repr2, El2](implicit w1: T1 => TraversableLike[El1, Repr1], w2: T2 => IterableLike[El2, Repr2]): Zipped[Repr1, El1, Repr2, El2]
+ = new Zipped[Repr1, El1, Repr2, El2](_1, _2)
class Zipped[+Repr1, +El1, +Repr2, +El2](coll1: TraversableLike[El1, Repr1], coll2: IterableLike[El2, Repr2]) { // coll2: IterableLike for filter
def map[B, To](f: (El1, El2) => B)(implicit cbf: CanBuildFrom[Repr1, B, To]): To = {
- val b = cbf(coll1.repr)
- val elems2 = coll2.iterator
+ val b = cbf(coll1.repr)
+ val elems2 = coll2.iterator
- for(el1 <- coll1)
+ for(el1 <- coll1)
if(elems2.hasNext)
b += f(el1, elems2.next)
- b.result
+ b.result
}
def flatMap[B, To](f: (El1, El2) => Traversable[B])(implicit cbf: CanBuildFrom[Repr1, B, To]): To = {