Объясните, плс, где применяется карринг. На простых примерах.

Лучше — на императивном языке или псевдоязыке.

В форуме полне постов, где упоминается карринг, но... непонятно.
Что это такое, в принципе, понимаю:
f: (a, b) -> c
карринг сделает:
f: a -> b -> c
Теперь бы понять, зачем оно применяется. И ещё маленький вопрос, тут предполагается, что а и b обязательно функции?