Currying transforms a function with two arguments into a function that takes one argument and returns another function. The type A => (B => C) reads as: supply an A, then receive a function from B to C. section 2.5
Partial application
Given an A and a function requiring both A and B to produce C, partial application fixes the A and returns a function waiting only for B: def partial1[A, B, C](a: A, f: (A, B) => C): B => C = (b: B) => f(a, b). Currying generalizes this pattern by transforming the original two-argument function itself. section 2.5






