A1:
- The difference is that in the latter you have to provide all the parameters at the same time.
A2:
EDIT Advantages / Disadvantages concept-wise
lambda calculus
semplicity:
In theoretical computer science, currying provides a way to study
functions with multiple arguments in very simple theoretical models
such as the lambda calculus in which functions only take a single
argument.
(nice example here: https://en.wikipedia.org/wiki/Currying#Motivation)
Curried functions needs closure
support:
Curried functions may be used in any language that supports closures
Uncurried functions for performance:
Uncurried functions are generally preferred for efficiency
reasons, since the overhead of partial application and closure
creation can then be avoided for most function calls.
Curry–Howard correspondence:
The existence of currying and uncurrying is equivalent to the logical
theorem
as tuples (product
type) corresponds to conjunction in logic, and function type
corresponds to implication.
Source: https://en.wikipedia.org/wiki/Currying