flip<A, B, C> function

C Function(A) Function(B) flip<A, B, C>(
  1. C Function(B) fn(
    1. A
    )
)

Flips the order of arguments for a curried function.

Example:

String concatenate(String a) => (String b) => a + b;
final flippedConcatenate = flip(concatenate);

print(concatenate('Hello, ')('World!'));  // Outputs: 'Hello, World!'
print(flippedConcatenate('World!')('Hello, '));  // Outputs: 'Hello, World!'

Implementation

C Function(A) Function(B) flip<A, B, C>(C Function(B) Function(A) fn) {
  return (B b) => (A a) {
        return fn(a)(b);
      };
}