A type signature declares a function’s parameter types, result type, and any type parameters. It describes the shape of a computation before its implementation. section 2.5
For partial1, the signature says that a value of type A and a function from (A, B) to C produce a function from B to C. Reading the result type first determines that the implementation must return a function. section 2.5
Partial application
def partial1[A, B, C](a: A, f: (A, B) => C): B => C = (b: B) => f(a, b) The returned function accepts the remaining B value and applies f to the captured A value and b. section 2.5







