Prakhar explains the difference between currying and partial application:

Currying simply means converting a function taking more than one parameter can be into a series of functions with each taking one parameter. Example:

Click through for an example, as well as the difference between currying and partial application. As for why currying is important, this is how we tie together the concept of **mathematical** functions, which require exactly one parameter (a function being defined as, for every value of the domain, there is one and only one value of the range), with **computer science** functions, which may have multiple parameters. Currying allows us to bridge that gap without needing to write loads of intermediary functions.