Меня спросили, какая связь между частичным применением функций и замыканиями. Я бы сказал, что их нет, если только я не упускаю суть. Допустим, я пишу на Python и у меня есть очень простая функция MySum, определенная следующим образом:
MySum = lambda x, y : x + y;
Теперь я исправляю один параметр, чтобы получить функцию с меньшей арностью, которая возвращает то же значение, которое вернула бы MySum, если бы я вызывал ее с теми же параметрами (частичное приложение):
MyPartialSum = lambda x : MySum(x, 0);
Я мог бы сделать то же самое с C:
int MySum(int x, int y) { return x + y; }
int MyPartialSum(int x) { return MySum(x, 0); }
Итак, тупой вопрос :какая разница? Зачем мне замыкания для частичных приложений? Эти коды эквивалентны, я не вижу, что связано с замыканиями и частичным приложением.