diff options
author | Geoffrey Washburn <geoffrey.washburn@epfl.ch> | 2008-04-23 08:15:17 +0000 |
---|---|---|
committer | Geoffrey Washburn <geoffrey.washburn@epfl.ch> | 2008-04-23 08:15:17 +0000 |
commit | 072455265526c994fb39221624209a3180b41837 (patch) | |
tree | f1d07a995e7668f97246975bc3867e4ef4196a1b /src/library/scala/Function16.scala | |
parent | d8342f44a77d0cb2780c1681e114fe2258a3dcb4 (diff) | |
download | scala-072455265526c994fb39221624209a3180b41837.tar.gz scala-072455265526c994fb39221624209a3180b41837.tar.bz2 scala-072455265526c994fb39221624209a3180b41837.zip |
Modified the implementation of curry so that for
FunctionN, where N > 4, many fewer classes are created statically at the
expense of creating more objects dynamically (which seems reasonable
given how common such functions are likely to be). This also allows for
curry in FunctionN for N > 8 without running into the filename length
restriction.
Diffstat (limited to 'src/library/scala/Function16.scala')
-rw-r--r-- | src/library/scala/Function16.scala | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/library/scala/Function16.scala b/src/library/scala/Function16.scala index cc5a520127..6bdc0174a9 100644 --- a/src/library/scala/Function16.scala +++ b/src/library/scala/Function16.scala @@ -9,7 +9,7 @@ // $Id$ -// generated by genprod on Tue Apr 22 16:52:19 CEST 2008 (with extra methods) +// generated by genprod on Wed Apr 23 10:06:16 CEST 2008 (with extra methods) package scala @@ -19,9 +19,13 @@ package scala * </p> * */ -trait Function16[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, +R] extends AnyRef { +trait Function16[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, +R] extends AnyRef { self => def apply(v1:T1, v2:T2, v3:T3, v4:T4, v5:T5, v6:T6, v7:T7, v8:T8, v9:T9, v10:T10, v11:T11, v12:T12, v13:T13, v14:T14, v15:T15, v16:T16): R override def toString() = "<function>" - + /** f(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16) == (f.curry)(x1)(x2)(x3)(x4)(x5)(x6)(x7)(x8)(x9)(x10)(x11)(x12)(x13)(x14)(x15)(x16) + */ + def curry: T1 => T2 => T3 => T4 => T5 => T6 => T7 => T8 => T9 => T10 => T11 => T12 => T13 => T14 => T15 => T16 => R = { + (x1: T1) => ((x2: T2, x3: T3, x4: T4, x5: T5, x6: T6, x7: T7, x8: T8, x9: T9, x10: T10, x11: T11, x12: T12, x13: T13, x14: T14, x15: T15, x16: T16) => self.apply(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16)).curry + } } |