Частичное применение и закрытие

Меня спросили, какая связь между частичным применением функций и замыканиями. Я бы сказал, что их нет, если только я не упускаю суть. Допустим, я пишу на 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); }

Итак, тупой вопрос :какая разница? Зачем мне замыкания для частичных приложений? Эти коды эквивалентны, я не вижу, что связано с замыканиями и частичным приложением.

8
задан Eigendrew 21 July 2012 в 08:57
поделиться