From 03b83bbe17d6229ea8f67f13dd4bcaade6823f19 Mon Sep 17 00:00:00 2001 From: tursom Date: Thu, 14 Oct 2021 09:58:18 +0800 Subject: [PATCH] add curry --- settings.gradle.kts | 1 + ts-core/ts-curry/build.gradle.kts | 14 + .../cn/tursom/core/curry/CurryBuilder.kt | 114 + .../tursom/core/curry/CurryInvokeExtension.kt | 234 ++ .../core/curry/MethodInvokeExtension.kt | 1882 ++++++++++++++ .../main/kotlin/cn/tursom/core/curry/curry.kt | 2188 +++++++++++++++++ .../cn/tursom/core/curry/CurryBuilder.kt | 136 + 7 files changed, 4569 insertions(+) create mode 100644 ts-core/ts-curry/build.gradle.kts create mode 100644 ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/CurryBuilder.kt create mode 100644 ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/CurryInvokeExtension.kt create mode 100644 ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/MethodInvokeExtension.kt create mode 100644 ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/curry.kt create mode 100644 ts-core/ts-curry/src/test/kotlin/cn/tursom/core/curry/CurryBuilder.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index 2f4f2a2..f3c677a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,6 +7,7 @@ include("ts-core:ts-datastruct") include("ts-core:ts-pool") include("ts-core:ts-hash") include("ts-core:ts-log") +include("ts-core:ts-curry") include("ts-core:ts-delegation") include("ts-core:ts-delegation:ts-observer") include("ts-core:ts-clone") diff --git a/ts-core/ts-curry/build.gradle.kts b/ts-core/ts-curry/build.gradle.kts new file mode 100644 index 0000000..4ca9c96 --- /dev/null +++ b/ts-core/ts-curry/build.gradle.kts @@ -0,0 +1,14 @@ +plugins { + kotlin("jvm") + `maven-publish` + id("ts-gradle") +} + +dependencies { + implementation(project(":")) + implementation(project(":ts-core")) +} + + + + diff --git a/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/CurryBuilder.kt b/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/CurryBuilder.kt new file mode 100644 index 0000000..9a38296 --- /dev/null +++ b/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/CurryBuilder.kt @@ -0,0 +1,114 @@ +package cn.tursom.core.curry + +fun curry(action: (a1: T1) -> R) = Curry1(action) + +fun curry(action: (a1: T1, a2: T2) -> R) = Curry2 { a1: T1, a2: T2 -> + action(a1, a2) +} + +fun curry(action: (a1: T1, a2: T2, a3: T3) -> R) = Curry3 { a1: T1, a2: T2, a3: T3 -> + action(a1, a2, a3) +} + +fun curry(action: (T1, T2, T3, T4) -> R) = Curry4 { a1: T1, a2: T2, a3: T3, a4: T4 -> + action(a1, a2, a3, a4) +} + +fun curry(action: (T1, T2, T3, T4, T5) -> R) = + Curry5 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5 -> + action(a1, a2, a3, a4, a5) + } + +fun curry(action: (T1, T2, T3, T4, T5, T6) -> R) = + Curry6 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6 -> + action(a1, a2, a3, a4, a5, a6) + } + +fun curry(action: (T1, T2, T3, T4, T5, T6, T7) -> R) = + Curry7 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7 -> + action(a1, a2, a3, a4, a5, a6, a7) + } + +fun curry(action: (T1, T2, T3, T4, T5, T6, T7, T8) -> R) = + Curry8 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8 -> + action(a1, a2, a3, a4, a5, a6, a7, a8) + } + +fun curry(action: (T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R) = + Curry9 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } + +fun curry(action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R) = + Curry10 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R +) = + Curry11 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R +) = Curry12 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) +} + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R +) = Curry13 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, + a13: T13 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) +} + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R +) = + Curry14 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, a14: T14 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R +) = Curry15 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, + a13: T13, a14: T14, a15: T15 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) +} + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R +) = Curry16 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, + a13: T13, a14: T14, a15: T15, a16: T16 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) +} + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R +) = Curry17 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, + a13: T13, a14: T14, a15: T15, a16: T16, a17: T17 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) +} + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R +) = Curry18 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, + a13: T13, a14: T14, a15: T15, a16: T16, a17: T17, a18: T18 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) +} + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R +) = Curry19 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, + a13: T13, a14: T14, a15: T15, a16: T16, a17: T17, a18: T18, a19: T19 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) +} + +fun curry( + action: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R +) = Curry20 { a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, + a13: T13, a14: T14, a15: T15, a16: T16, a17: T17, a18: T18, a19: T19, a20: T20 -> + action(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) +} diff --git a/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/CurryInvokeExtension.kt b/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/CurryInvokeExtension.kt new file mode 100644 index 0000000..88dc02f --- /dev/null +++ b/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/CurryInvokeExtension.kt @@ -0,0 +1,234 @@ +//package cn.tursom.core.curry +// +//import com.ddbes.kotlin.util.uncheckedCast +// +//operator fun Curry1>.invoke(a1: T1, a2: T2): R { +// return if (this is Curry2) { +// uncheckedCast>()(a1, a2) +// } else { +// invoke(a1)(a2) +// } +//} +// +//operator fun Curry1>>.invoke(a1: T1, a2: T2, a3: T3): R { +// return if (this is Curry3) { +// uncheckedCast>()(a1, a2, a3) +// } else { +// invoke(a1)(a2)(a3) +// } +//} +// +//operator fun Curry1>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4 +//): R { +// return if (this is Curry4) { +// uncheckedCast>()(a1, a2, a3, a4) +// } else { +// invoke(a1)(a2)(a3)(a4) +// } +//} +// +//operator fun Curry1>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5 +//): R { +// return if (this is Curry5) { +// uncheckedCast>()(a1, a2, a3, a4, a5) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5) +// } +//} +// +//operator fun +// Curry1>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6 +//): R { +// return if (this is Curry6) { +// uncheckedCast>()(a1, a2, a3, a4, a5, a6) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6) +// } +//} +// +//operator fun +// Curry1>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7 +//): R { +// return if (this is Curry7) { +// uncheckedCast>()(a1, a2, a3, a4, a5, a6, a7) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7) +// } +//} +// +//operator fun +// Curry1>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8 +//): R { +// return if (this is Curry8) { +// uncheckedCast>()(a1, a2, a3, a4, a5, a6, a7, a8) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8) +// } +//} +// +//operator fun +// Curry1>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9 +//): R { +// return if (this is Curry9) { +// uncheckedCast>()(a1, a2, a3, a4, a5, a6, a7, a8, a9) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10 +//): R { +// return if (this is Curry10) { +// uncheckedCast>()(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11 +//): R { +// return if (this is Curry11) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12 +//): R { +// return if (this is Curry12) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13 +//): R { +// return if (this is Curry13) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, +// a14: T14 +//): R { +// return if (this is Curry14) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, +// a14: T14, a15: T15 +//): R { +// return if (this is Curry15) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, +// a14: T14, a15: T15, a16: T16 +//): R { +// return if (this is Curry16) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, +// a14: T14, a15: T15, a16: T16, a17: T17 +//): R { +// return if (this is Curry17) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, +// a14: T14, a15: T15, a16: T16, a17: T17, a18: T18 +//): R { +// return if (this is Curry18) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, +// a14: T14, a15: T15, a16: T16, a17: T17, a18: T18, a19: T19 +//): R { +// return if (this is Curry19) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18)(a19) +// } +//} +// +//operator fun +// Curry1>>>>>>>>>>>>>>>>>>>.invoke( +// a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, +// a14: T14, a15: T15, a16: T16, a17: T17, a18: T18, a19: T19, a20: T20 +//): R { +// return if (this is Curry20) { +// uncheckedCast>()( +// a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) +// } else { +// invoke(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18)(a19)(a20) +// } +//} diff --git a/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/MethodInvokeExtension.kt b/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/MethodInvokeExtension.kt new file mode 100644 index 0000000..8f91a1f --- /dev/null +++ b/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/MethodInvokeExtension.kt @@ -0,0 +1,1882 @@ +package cn.tursom.core.curry + +operator fun ((T1, T2) -> R).invoke() = curry(this) +operator fun ((T1, T2) -> R).invoke(a1: T1) = curry(this)(a1) + +operator fun ((T1, T2, T3) -> R).invoke() = curry(this) +operator fun ((T1, T2, T3) -> R).invoke(a1: T1) = curry(this)(a1) +operator fun ((T1, T2, T3) -> R).invoke(a1: T1, a2: T2) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4) -> R).invoke() = curry(this) +operator fun ((T1, T2, T3, T4) -> R).invoke(a1: T1) = curry(this)(a1) +operator fun ((T1, T2, T3, T4) -> R).invoke(a1: T1, a2: T2) = curry(this)(a1, a2) +operator fun ((T1, T2, T3, T4) -> R).invoke(a1: T1, a2: T2, a3: T3) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5) -> R).invoke() = curry(this) +operator fun ((T1, T2, T3, T4, T5) -> R).invoke(a1: T1) = curry(this)(a1) +operator fun ((T1, T2, T3, T4, T5) -> R).invoke(a1: T1, a2: T2) = curry(this)(a1, a2) +operator fun ((T1, T2, T3, T4, T5) -> R).invoke(a1: T1, a2: T2, a3: T3) = + curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5) -> R).invoke(a1: T1, a2: T2, a3: T3, a4: T4) = + curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6) -> R).invoke() = curry(this) +operator fun ((T1, T2, T3, T4, T5, T6) -> R).invoke(a1: T1) = curry(this)(a1) +operator fun ((T1, T2, T3, T4, T5, T6) -> R).invoke(a1: T1, a2: T2) = curry(this)(a1, a2) +operator fun ((T1, T2, T3, T4, T5, T6) -> R).invoke(a1: T1, a2: T2, a3: T3) = + curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6) -> R).invoke(a1: T1, a2: T2, a3: T3, a4: T4) = + curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7) -> R).invoke() = curry(this) +operator fun ((T1, T2, T3, T4, T5, T6, T7) -> R).invoke(a1: T1) = curry(this)(a1) +operator fun ((T1, T2, T3, T4, T5, T6, T7) -> R).invoke(a1: T1, a2: T2) = + curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7) -> R).invoke(a1: T1, a2: T2, a3: T3) = + curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).invoke() = curry(this) +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).invoke(a1: T1) = + curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).invoke(a1: T1, a2: T2) = + curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke() = curry(this) +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke(a1: T1) = + curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke(a1: T1) = + curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17, + a18: T18 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke() = + curry(this) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1 +) = curry(this)(a1) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2 +) = curry(this)(a1, a2) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3 +) = curry(this)(a1, a2, a3) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 +) = curry(this)(a1, a2, a3, a4) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 +) = curry(this)(a1, a2, a3, a4, a5) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 +) = curry(this)(a1, a2, a3, a4, a5, a6) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17, + a18: T18 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + +operator fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17, + a18: T18, + a19: T19 +) = curry(this)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) diff --git a/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/curry.kt b/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/curry.kt new file mode 100644 index 0000000..f28c858 --- /dev/null +++ b/ts-core/ts-curry/src/main/kotlin/cn/tursom/core/curry/curry.kt @@ -0,0 +1,2188 @@ +package cn.tursom.core.curry + +open class Curry1( + val action1: (a1: T1) -> R, +) { + open operator fun invoke(a1: T1) = action1(a1) +} + +open class Curry2( + val action2: (a1: T1, a2: T2) -> R, +) : Curry1>({ a1 -> + Curry1 { a2 -> + action2(a1, a2) + } +}) { + open operator fun invoke(a1: T1, a2: T2): R { + return action2(a1, a2) + } +} + +open class Curry3( + val action3: (a1: T1, a2: T2, a3: T3) -> R, +) : Curry2>({ a1, a2 -> + Curry1 { a3 -> + action3(a1, a2, a3) + } +}) { + override operator fun invoke(a1: T1): Curry2 = Curry2 { a2, a3 -> + action3(a1, a2, a3) + } + + open operator fun invoke(a1: T1, a2: T2, a3: T3): R = action3(a1, a2, a3) +} + +open class Curry4( + val action4: (a1: T1, a2: T2, a3: T3, a4: T4) -> R, +) : Curry3>({ a1, a2, a3 -> + Curry1 { a4 -> + action4(a1, a2, a3, a4) + } +}) { + override operator fun invoke(a1: T1): Curry3 = Curry3 { a2, a3, a4 -> + action4(a1, a2, a3, a4) + } + + override operator fun invoke(a1: T1, a2: T2): Curry2 = Curry2 { a3, a4 -> + action4(a1, a2, a3, a4) + } + + open operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): R = action4(a1, a2, a3, a4) +} + +open class Curry5( + val action5: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5) -> R, +) : Curry4>({ a1, a2, a3, a4 -> + Curry1 { a5 -> + action5(a1, a2, a3, a4, a5) + } +}) { + override operator fun invoke(a1: T1): Curry4 = Curry4 { a2, a3, a4, a5 -> + action5(a1, a2, a3, a4, a5) + } + + override operator fun invoke(a1: T1, a2: T2): Curry3 = Curry3 { a3, a4, a5 -> + action5(a1, a2, a3, a4, a5) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry2 = Curry2 { a4, a5 -> + action5(a1, a2, a3, a4, a5) + } + + open operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5): R = action5(a1, a2, a3, a4, a5) +} + +open class Curry6( + val action6: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6) -> R, +) : Curry5>({ a1, a2, a3, a4, a5 -> + Curry1 { a6 -> + action6(a1, a2, a3, a4, a5, a6) + } +}) { + override operator fun invoke(a1: T1): Curry5 = Curry5 { a2, a3, a4, a5, a6 -> + action6(a1, a2, a3, a4, a5, a6) + } + + override operator fun invoke(a1: T1, a2: T2): Curry4 = Curry4 { a3, a4, a5, a6 -> + action6(a1, a2, a3, a4, a5, a6) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry3 = Curry3 { a4, a5, a6 -> + action6(a1, a2, a3, a4, a5, a6) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): Curry2 = Curry2 { a5, a6 -> + action6(a1, a2, a3, a4, a5, a6) + } + + open operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6): R = action6(a1, a2, a3, a4, a5, a6) +} + +open class Curry7( + val action7: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7) -> R, +) : Curry6>({ a1, a2, a3, a4, a5, a6 -> + Curry1 { a7 -> + action7(a1, a2, a3, a4, a5, a6, a7) + } +}) { + override operator fun invoke(a1: T1): Curry6 = Curry6 { a2, a3, a4, a5, a6, a7 -> + action7(a1, a2, a3, a4, a5, a6, a7) + } + + override operator fun invoke(a1: T1, a2: T2): Curry5 = Curry5 { a3, a4, a5, a6, a7 -> + action7(a1, a2, a3, a4, a5, a6, a7) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry4 = Curry4 { a4, a5, a6, a7 -> + action7(a1, a2, a3, a4, a5, a6, a7) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): Curry3 = Curry3 { a5, a6, a7 -> + action7(a1, a2, a3, a4, a5, a6, a7) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5): Curry2 = Curry2 { a6, a7 -> + action7(a1, a2, a3, a4, a5, a6, a7) + } + + open operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7): R = + action7(a1, a2, a3, a4, a5, a6, a7) +} + +open class Curry8( + val action8: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8) -> R, +) : Curry7>({ a1, a2, a3, a4, a5, a6, a7 -> + Curry1 { a8 -> + action8(a1, a2, a3, a4, a5, a6, a7, a8) + } +}) { + override operator fun invoke(a1: T1): Curry7 = Curry7 { a2, a3, a4, a5, a6, a7, a8 -> + action8(a1, a2, a3, a4, a5, a6, a7, a8) + } + + override operator fun invoke(a1: T1, a2: T2): Curry6 = Curry6 { a3, a4, a5, a6, a7, a8 -> + action8(a1, a2, a3, a4, a5, a6, a7, a8) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry5 = Curry5 { a4, a5, a6, a7, a8 -> + action8(a1, a2, a3, a4, a5, a6, a7, a8) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): Curry4 = Curry4 { a5, a6, a7, a8 -> + action8(a1, a2, a3, a4, a5, a6, a7, a8) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5): Curry3 = Curry3 { a6, a7, a8 -> + action8(a1, a2, a3, a4, a5, a6, a7, a8) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6): Curry2 = Curry2 { a7, a8 -> + action8(a1, a2, a3, a4, a5, a6, a7, a8) + } + + open operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8): R = + action8(a1, a2, a3, a4, a5, a6, a7, a8) +} + +open class Curry9( + val action9: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9) -> R, +) : Curry8>({ a1, a2, a3, a4, a5, a6, a7, a8 -> + Curry1 { a9 -> + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } +}) { + override operator fun invoke(a1: T1): Curry8 = + Curry8 { a2, a3, a4, a5, a6, a7, a8, a9 -> + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } + + override operator fun invoke(a1: T1, a2: T2): Curry7 = + Curry7 { a3, a4, a5, a6, a7, a8, a9 -> + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry6 = + Curry6 { a4, a5, a6, a7, a8, a9 -> + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): Curry5 = + Curry5 { a5, a6, a7, a8, a9 -> + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5): Curry4 = + Curry4 { a6, a7, a8, a9 -> + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6): Curry3 = + Curry3 { a7, a8, a9 -> + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7): Curry2 = + Curry2 { a8, a9 -> + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) + } + + open operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9): R = + action9(a1, a2, a3, a4, a5, a6, a7, a8, a9) +} + +open class Curry10( + val action10: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10) -> R, +) : Curry9>({ a1, a2, a3, a4, a5, a6, a7, a8, a9 -> + Curry1 { a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } +}) { + override operator fun invoke(a1: T1): Curry9 = + Curry9 { a2, a3, a4, a5, a6, a7, a8, a9, a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + + override operator fun invoke(a1: T1, a2: T2): Curry8 = + Curry8 { a3, a4, a5, a6, a7, a8, a9, a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry7 = + Curry7 { a4, a5, a6, a7, a8, a9, a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): Curry6 = + Curry6 { a5, a6, a7, a8, a9, a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5): Curry5 = + Curry5 { a6, a7, a8, a9, a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6): Curry4 = + Curry4 { a7, a8, a9, a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7): Curry3 = + Curry3 { a8, a9, a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8): Curry2 = + Curry2 { a9, a10 -> + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + } + + open operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10): R = + action10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) +} + +open class Curry11( + val action11: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11) -> R, +) : Curry10>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 -> + Curry1 { a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } +}) { + override operator fun invoke(a1: T1): Curry10 = + Curry10 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + override operator fun invoke(a1: T1, a2: T2): Curry9 = + Curry9 { a3, a4, a5, a6, a7, a8, a9, a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry8 = + Curry8 { a4, a5, a6, a7, a8, a9, a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): Curry7 = + Curry7 { a5, a6, a7, a8, a9, a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5): Curry6 = + Curry6 { a6, a7, a8, a9, a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6): Curry5 = + Curry5 { a7, a8, a9, a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7): Curry4 = + Curry4 { a8, a9, a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry3 = Curry3 { a9, a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry2 = Curry2 { a10, a11 -> + action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): R = action11(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) +} + +open class Curry12( + val action12: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12) -> R, +) : Curry11>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 -> + Curry1 { a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } +}) { + override operator fun invoke(a1: T1): Curry11 = + Curry11 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke(a1: T1, a2: T2): Curry10 = + Curry10 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry9 = + Curry9 { a4, a5, a6, a7, a8, a9, a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): Curry8 = + Curry8 { a5, a6, a7, a8, a9, a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5): Curry7 = + Curry7 { a6, a7, a8, a9, a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6): Curry6 = + Curry6 { a7, a8, a9, a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry5 = Curry5 { a8, a9, a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry4 = Curry4 { a9, a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry3 = Curry3 { a10, a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry2 = Curry2 { a11, a12 -> + action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 + ): R = action12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) +} + +open class Curry13( + val action13: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13) -> R, +) : Curry12>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 -> + Curry1 { a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } +}) { + override operator fun invoke(a1: T1): Curry12 = + Curry12 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke(a1: T1, a2: T2): Curry11 = + Curry11 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry10 = + Curry10 { a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3, a4: T4): Curry9 = + Curry9 { a5, a6, a7, a8, a9, a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 + ): Curry8 = Curry8 { a6, a7, a8, a9, a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 + ): Curry7 = Curry7 { a7, a8, a9, a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry6 = Curry6 { a8, a9, a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry5 = Curry5 { a9, a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry4 = Curry4 { a10, a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry3 = Curry3 { a11, a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): Curry2 = Curry2 { a12, a13 -> + action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 + ): R = action13(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) +} + +open class Curry14( + val action14: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, a14: T14) -> R, +) : Curry13>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 -> + Curry1 { a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } +}) { + override operator fun invoke(a1: T1): Curry13 = + Curry13 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke(a1: T1, a2: T2): Curry12 = + Curry12 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke(a1: T1, a2: T2, a3: T3): Curry11 = + Curry11 { a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 + ): Curry10 = + Curry10 { a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 + ): Curry9 = Curry9 { a6, a7, a8, a9, a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 + ): Curry8 = Curry8 { a7, a8, a9, a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry7 = Curry7 { a8, a9, a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry6 = Curry6 { a9, a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry5 = Curry5 { a10, a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry4 = Curry4 { a11, a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): Curry3 = Curry3 { a12, a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 + ): Curry2 = Curry2 { a13, a14 -> + action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 + ): R = action14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) +} + +open class Curry15( + val action15: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, a14: T14, a15: T15) -> R, +) : Curry14>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 -> + Curry1 { a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } +}) { + override operator fun invoke(a1: T1): Curry14 = + Curry14 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke(a1: T1, a2: T2): Curry13 = + Curry13 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3 + ): Curry12 = + Curry12 { a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 + ): Curry11 = + Curry11 { a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 + ): Curry10 = + Curry10 { a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 + ): Curry9 = Curry9 { a7, a8, a9, a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry8 = Curry8 { a8, a9, a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry7 = Curry7 { a9, a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry6 = Curry6 { a10, a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry5 = Curry5 { a11, a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): Curry4 = Curry4 { a12, a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 + ): Curry3 = Curry3 { a13, a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 + ): Curry2 = Curry2 { a14, a15 -> + action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 + ): R = action15(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) +} + +open class Curry16( + val action16: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, a14: T14, a15: T15, a16: T16) -> R, +) : Curry15>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 -> + Curry1 { a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } +}) { + override operator fun invoke(a1: T1): Curry15 = + Curry15 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2 + ): Curry14 = + Curry14 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3 + ): Curry13 = + Curry13 { a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 + ): Curry12 = + Curry12 { a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 + ): Curry11 = + Curry11 { a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 + ): Curry10 = + Curry10 { a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry9 = Curry9 { a8, a9, a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry8 = Curry8 { a9, a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry7 = Curry7 { a10, a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry6 = Curry6 { a11, a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): Curry5 = Curry5 { a12, a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 + ): Curry4 = Curry4 { a13, a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 + ): Curry3 = Curry3 { a14, a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 + ): Curry2 = Curry2 { a15, a16 -> + action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16 + ): R = action16(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) +} + +open class Curry17( + val action17: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, a14: T14, a15: T15, a16: T16, a17: T17) -> R, +) : Curry16>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 -> + Curry1 { a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } +}) { + override operator fun invoke(a1: T1): Curry16 = + Curry16 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2 + ): Curry15 = + Curry15 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3 + ): Curry14 = + Curry14 { a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 + ): Curry13 = + Curry13 { a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 + ): Curry12 = + Curry12 { a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 + ): Curry11 = + Curry11 { a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry10 = + Curry10 { a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry9 = Curry9 { a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry8 = Curry8 { a10, a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry7 = Curry7 { a11, a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): Curry6 = Curry6 { a12, a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 + ): Curry5 = Curry5 { a13, a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 + ): Curry4 = Curry4 { a14, a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 + ): Curry3 = Curry3 { a15, a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 + ): Curry2 = Curry2 { a16, a17 -> + action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17 + ): R = action17(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) +} + +open class Curry18( + val action18: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, a14: T14, a15: T15, a16: T16, a17: T17, a18: T18) -> R, +) : Curry17>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 -> + Curry1 { a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } +}) { + override operator fun invoke(a1: T1): Curry17 = + Curry17 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2 + ): Curry16 = + Curry16 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3 + ): Curry15 = + Curry15 { a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 + ): Curry14 = + Curry14 { a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 + ): Curry13 = + Curry13 { a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 + ): Curry12 = + Curry12 { a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry11 = + Curry11 { a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry10 = + Curry10 { a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry9 = Curry9 { a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry8 = Curry8 { a11, a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): Curry7 = Curry7 { a12, a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 + ): Curry6 = Curry6 { a13, a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 + ): Curry5 = Curry5 { a14, a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 + ): Curry4 = Curry4 { a15, a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 + ): Curry3 = Curry3 { a16, a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16 + ): Curry2 = Curry2 { a17, a18 -> + action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17, + a18: T18 + ): R = action18(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) +} + +open class Curry19( + val action19: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, a14: T14, a15: T15, a16: T16, a17: T17, a18: T18, a19: T19) -> R, +) : Curry18>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 -> + Curry1 { a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } +}) { + override operator fun invoke(a1: T1): Curry18 = + Curry18 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2 + ): Curry17 = + Curry17 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3 + ): Curry16 = + Curry16 { a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 + ): Curry15 = + Curry15 { a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 + ): Curry14 = + Curry14 { a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 + ): Curry13 = + Curry13 { a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry12 = + Curry12 { a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry11 = + Curry11 { a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry10 = + Curry10 { a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry9 = Curry9 { a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): Curry8 = Curry8 { a12, a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 + ): Curry7 = Curry7 { a13, a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 + ): Curry6 = Curry6 { a14, a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 + ): Curry5 = Curry5 { a15, a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 + ): Curry4 = Curry4 { a16, a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16 + ): Curry3 = Curry3 { a17, a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17 + ): Curry2 = Curry2 { a18, a19 -> + action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17, + a18: T18, + a19: T19 + ): R = action19(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) +} + +open class Curry20( + val action20: (a1: T1, a2: T2, a3: T3, a4: T4, a5: T5, a6: T6, a7: T7, a8: T8, a9: T9, a10: T10, a11: T11, a12: T12, a13: T13, a14: T14, a15: T15, a16: T16, a17: T17, a18: T18, a19: T19, a20: T20) -> R, +) : Curry19>({ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 -> + Curry1 { a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } +}) { + override operator fun invoke(a1: T1): Curry19 = + Curry19 { a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2 + ): Curry18 = + Curry18 { a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3 + ): Curry17 = + Curry17 { a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4 + ): Curry16 = + Curry16 { a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5 + ): Curry15 = + Curry15 { a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6 + ): Curry14 = + Curry14 { a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7 + ): Curry13 = + Curry13 { a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8 + ): Curry12 = + Curry12 { a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9 + ): Curry11 = + Curry11 { a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10 + ): Curry10 = + Curry10 { a11, a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11 + ): Curry9 = Curry9 { a12, a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12 + ): Curry8 = Curry8 { a13, a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13 + ): Curry7 = Curry7 { a14, a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14 + ): Curry6 = Curry6 { a15, a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15 + ): Curry5 = Curry5 { a16, a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16 + ): Curry4 = Curry4 { a17, a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17 + ): Curry3 = Curry3 { a18, a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + override operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17, + a18: T18 + ): Curry2 = Curry2 { a19, a20 -> + action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + } + + open operator fun invoke( + a1: T1, + a2: T2, + a3: T3, + a4: T4, + a5: T5, + a6: T6, + a7: T7, + a8: T8, + a9: T9, + a10: T10, + a11: T11, + a12: T12, + a13: T13, + a14: T14, + a15: T15, + a16: T16, + a17: T17, + a18: T18, + a19: T19, + a20: T20 + ): R = action20(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) +} diff --git a/ts-core/ts-curry/src/test/kotlin/cn/tursom/core/curry/CurryBuilder.kt b/ts-core/ts-curry/src/test/kotlin/cn/tursom/core/curry/CurryBuilder.kt new file mode 100644 index 0000000..5d12029 --- /dev/null +++ b/ts-core/ts-curry/src/test/kotlin/cn/tursom/core/curry/CurryBuilder.kt @@ -0,0 +1,136 @@ +package com.ddbes.kotlin + +import com.ddbes.kotlin.util.removeLastChars +import org.junit.Test + +class CurryBuilder { + @Test + fun buildCurryClass() { + (3..20).forEach(::buildCurryClass) + } + + @Test + fun buildInvokeMethod() { + (3..20).forEach(::buildInvokeMethod) + } + + @Test + fun buildMethodInvoker() { + (4..20).forEach(::buildMethodInvoker) + } + + fun args(index: Int) = buildString { + repeat(index) { + append("a${it + 1}, ") + } + removeLastChars(2) + } + + fun args(fromIndex: Int, toIndex: Int) = buildString { + (fromIndex..toIndex).forEach { + append("a${it}, ") + } + removeLastChars(2) + } + + fun types(index: Int) = buildString { + repeat(index) { + append("T${it + 1}, ") + } + removeLastChars(2) + } + + fun types(fromIndex: Int, toIndex: Int) = buildString { + (fromIndex..toIndex).forEach { + append("T${it}, ") + } + removeLastChars(2) + } + + fun argsWithType(index: Int) = buildString { + repeat(index) { + append("a${it + 1}: T${it + 1}, ") + } + removeLastChars(2) + } + + fun buildCurryClass(index: Int) { + val args = args(index) + val argsWithType = argsWithType(index) + val types = types(index) + val invokeAction = "action$index($args)" + println(buildString { + append("open class Curry$index<$types, R>(\n") + append(" val action$index: ($argsWithType) -> R,\n") + append(") : Curry${index - 1}<${types(index - 1)}, Curry1>({ ${args(index - 1)} ->\n") + append(" Curry1 { a$index ->\n") + append(" action$index($args)\n") + append(" }\n") + append("}) {\n") + if (index > 2) (1..index - 2).forEach { overrideInvoke -> + append( + " override operator fun invoke(${argsWithType(overrideInvoke)}): Curry${index - overrideInvoke}<${ + types(overrideInvoke + 1, index) + }, R> = Curry${index - overrideInvoke} { ${args(overrideInvoke + 1, index)} ->\n" + ) + append(" $invokeAction\n") + append(" }\n") + append("\n") + } + append(" open operator fun invoke($argsWithType): R = $invokeAction\n") + append("}\n") + }) + } + + fun buildCurryMethod(index: Int) { + val args = args(index) + val argsWithType = argsWithType(index) + val types = types(index) + + println(buildString { + append("fun <$types, R> curry(action: ($types) -> R) =\n") + append(" Curry$index { $argsWithType ->\n") + append(" action($args)\n") + append(" }\n") + }) + } + + fun buildInvokeMethod(index: Int) { + val args = args(index) + val argsWithType = argsWithType(index) + val types = types(index) + + println(buildString { + append("operator fun <$types, R> ") + repeat(index - 1) { + append("Curry1", ">".repeat(index - 1), ".invoke($argsWithType): R {\n") + append(" return if (this is Curry$index) {\n") + append(" uncheckedCast>()($args)\n") + append(" } else {\n") + append(" invoke") + repeat(index) { an -> + append("(a${an + 1})") + } + append("\n") + append(" }\n") + append("}\n") + }) + } + + fun buildMethodInvoker(index: Int) { + val args = args(index) + val argsWithType = argsWithType(index) + val types = types(index) + + println("operator fun <$types, R> (($types) -> R).invoke() = curry(this)") + (1 until index).forEach { argCount -> + println( + "operator fun <$types, R> (($types) -> R).invoke(${argsWithType(argCount)}) = " + + "curry(this)(${args(argCount)})" + ) + } + println() + } +}