diff options
author | Martin Odersky <odersky@gmail.com> | 2006-12-04 17:41:36 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-12-04 17:41:36 +0000 |
commit | 67dfced37f9b5d7a2b7f80f4da7fb5716f557350 (patch) | |
tree | c62c6fafcd14d847d45baa8b6155d9c52b76cbfc /src/library | |
parent | 525018c3cab1aaeb6644e9dacae2ab36ffa28d13 (diff) | |
download | scala-67dfced37f9b5d7a2b7f80f4da7fb5716f557350.tar.gz scala-67dfced37f9b5d7a2b7f80f4da7fb5716f557350.tar.bz2 scala-67dfced37f9b5d7a2b7f80f4da7fb5716f557350.zip |
added infix type constructors
added &: infix constructor for pairs
optimization to remove redudant outer pointers
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/Function.scala | 2 | ||||
-rw-r--r-- | src/library/scala/Predef.scala | 48 |
2 files changed, 26 insertions, 24 deletions
diff --git a/src/library/scala/Function.scala b/src/library/scala/Function.scala index 6f4c14ed55..12e124779b 100644 --- a/src/library/scala/Function.scala +++ b/src/library/scala/Function.scala @@ -16,7 +16,7 @@ package scala * @author Martin Odersky * @version 1.0, 29/11/2006 */ -object Function extends Application { +object Function { /** Given a sequence of functions <code>f<sub>1</sub></code>, ..., * <code>f<sub>n</sub></code>, return the function <code>f<sub>1</sub> diff --git a/src/library/scala/Predef.scala b/src/library/scala/Predef.scala index 9985a4f855..1422aa6d0d 100644 --- a/src/library/scala/Predef.scala +++ b/src/library/scala/Predef.scala @@ -54,29 +54,7 @@ object Predef { type NoSuchElementException = java.util.NoSuchElementException type NumberFormatException = java.lang.NumberFormatException -/* - type ~[a, b] = Tuple2[a, b] - class FirstOfPair[a](x: a) { - def ~[b](y: b): Tuple2[a, b] = Tuple2(x, y) - } - implicit def any2firstOfPair[a](x: a): FirstOfPair[a] = new FirstOfPair(x) -*/ - - type Pair[+a, +b] = Tuple2[a, b] - def Pair[a, b](x: a, y: b) = Tuple2(x, y) - - type Triple[+a, +b, +c] = Tuple3[a, b, c] - def Triple[a, b, c](x: a, y: b, z: c) = Tuple3(x, y, z) - - def Tuple[a1](x1: a1) = Tuple1(x1) - def Tuple[a1, a2](x1: a1, x2: a2) = Tuple2(x1, x2) - def Tuple[a1, a2, a3](x1: a1, x2: a2, x3: a3) = Tuple3(x1, x2, x3) - def Tuple[a1, a2, a3, a4](x1: a1, x2: a2, x3: a3, x4: a4) = Tuple4(x1, x2, x3, x4) - def Tuple[a1, a2, a3, a4, a5](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5) = Tuple5(x1, x2, x3, x4, x5) - def Tuple[a1, a2, a3, a4, a5, a6](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5, x6: a6) = Tuple6(x1, x2, x3, x4, x5, x6) - def Tuple[a1, a2, a3, a4, a5, a6, a7](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5, x6: a6, x7: a7) = Tuple7(x1, x2, x3, x4, x5, x6, x7) - def Tuple[a1, a2, a3, a4, a5, a6, a7, a8](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5, x6: a6, x7: a7, x8: a8) = Tuple8(x1, x2, x3, x4, x5, x6, x7, x8) - def Tuple[a1, a2, a3, a4, a5, a6, a7, a8, a9](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5, x6: a6, x7: a7, x8: a8, x9: a9) = Tuple9(x1, x2, x3, x4, x5, x6, x7, x8, x9) + // --- Miscelleaneous ----------------------------------------------- val $scope = scala.xml.TopScope @@ -113,6 +91,30 @@ object Predef { throw new Error("assumption failed: " + message) } + // --- Tupling ---------------------------------------------- + + type Pair[+a, +b] = Tuple2[a, b] + def Pair[a, b](x: a, y: b) = Tuple2(x, y) + + type Triple[+a, +b, +c] = Tuple3[a, b, c] + def Triple[a, b, c](x: a, y: b, z: c) = Tuple3(x, y, z) + + type &: [+a, +b] = Tuple2[a, b] + class SndOfPair[+b](y: b) { + def &: [a](x: a): Tuple2[a, b] = Tuple2(x, y) + } + implicit def any2sndOfPair[b](x: b): SndOfPair[b] = new SndOfPair(x) + + def Tuple[a1](x1: a1) = Tuple1(x1) + def Tuple[a1, a2](x1: a1, x2: a2) = Tuple2(x1, x2) + def Tuple[a1, a2, a3](x1: a1, x2: a2, x3: a3) = Tuple3(x1, x2, x3) + def Tuple[a1, a2, a3, a4](x1: a1, x2: a2, x3: a3, x4: a4) = Tuple4(x1, x2, x3, x4) + def Tuple[a1, a2, a3, a4, a5](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5) = Tuple5(x1, x2, x3, x4, x5) + def Tuple[a1, a2, a3, a4, a5, a6](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5, x6: a6) = Tuple6(x1, x2, x3, x4, x5, x6) + def Tuple[a1, a2, a3, a4, a5, a6, a7](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5, x6: a6, x7: a7) = Tuple7(x1, x2, x3, x4, x5, x6, x7) + def Tuple[a1, a2, a3, a4, a5, a6, a7, a8](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5, x6: a6, x7: a7, x8: a8) = Tuple8(x1, x2, x3, x4, x5, x6, x7, x8) + def Tuple[a1, a2, a3, a4, a5, a6, a7, a8, a9](x1: a1, x2: a2, x3: a3, x4: a4, x5: a5, x6: a6, x7: a7, x8: a8, x9: a9) = Tuple9(x1, x2, x3, x4, x5, x6, x7, x8, x9) + // views ------------------------------------------------------------- implicit def identity[a](x: a): a = x |