Skip to content

Instantly share code, notes, and snippets.

@MarioAriasC
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MarioAriasC/208998d0e4bcf45d27f2 to your computer and use it in GitHub Desktop.
Save MarioAriasC/208998d0e4bcf45d27f2 to your computer and use it in GitHub Desktop.
New Partials
public fun <P1, P2, R> Function2<P1, P2, R>.invoke(p1:
P1, partial2: Partial<P2> = partial()): (P2) -> R {
return {(p2: P2) -> this(p1, p2) }
}
public fun <P1, P2, R> Function2<P1, P2, R>.invoke(partial1: Partial<P1> = partial(),
p2: P2): (P1) -> R {
return {(p1: P1) -> this(p1, p2) }
}
public fun <P1, P2, P3, P4, P5, R> Function5<P1, P2, P3, P4, P5, R>.invoke(partial1: Partial<P1> = partial(),
partial2: Partial<P2> = partial(),
partial3: Partial<P3> = partial(),
partial4: Partial<P4> = partial(),
p5: P5): (P1, P2, P3, P4) -> R {
return {(p1: P1, p2: P2, p3: P3, p4: P4) -> this(p1, p2, p3, p4, p5) }
}
public fun <P1, P2, P3, P4, R> Function4<P1, P2, P3, P4, R>.invoke(partial1: Partial<P1> = partial(),
partial2: Partial<P2> = partial(),
partial3: Partial<P3> = partial(),
p4: P4): (P1, P2, P3) -> R {
return {(p1: P1, p2: P2, p3: P3) -> this(p1, p2, p3, p4) }
}
public fun <P1, P2, P3, R> Function3<P1, P2, P3, R>.invoke(partial1: Partial<P1> = partial(),
partial2: Partial<P2> = partial(),
p3: P3): (P1, P2) -> R {
return {(p1: P1, p2: P2) -> this(p1, p2, p3) }
}
public fun <P1, P2, P3, R> Function3<P1, P2, P3, R>.invoke(partial1: Partial<P1> = partial(),
p2: P2,
partial3: Partial<P3> = partial()): (P1, P3) -> R {
return {(p1: P1, p3: P3) -> this(p1, p2, p3) }
}
public fun <P1, P2, P3, R> Function3<P1, P2, P3, R>.invoke(p1: P1,
partial2: Partial<P1> = partial(),
p3: P3): (P2) -> R {
return {(p2: P2) -> this(p1, p2, p3) }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment