В чем различия и возможные сходства замыканий и карри? - PullRequest
8 голосов
/ 17 декабря 2008

Я прочитал некоторые посты о замыканиях и карри, но мне кажется, что я не нашел ответа. Так в чем же различия и, возможно, сходство замыканий и карри? Спасибо за помощь:)

1 Ответ

6 голосов
/ 17 декабря 2008

Curry - это действительно математическая концепция в первую очередь. Это просто наблюдение, что для любой n -ной функции f: S 0 & times; ... S n & rarr; R , вы можете определить новую функцию fprime (только что обнаружена ошибка уценки!) С параметрами n-1 , где этот первый параметр заменяется константой. Итак, если у вас есть функция add(a,b), вы можете определить новую функцию add1(b) как

add1(b) ::= add(1, b)

... чтение ":: =" as "определено как."

A замыкание - это больше концепция программирования. (Конечно, все в программировании также является математической концепцией, но замыкания стали интересными из-за программирования.) Когда вы конструируете замыкание, вы связываете одну или несколько переменных; вы создаете кусок кода, к которому привязаны некоторые переменные.

Отношение заключается в том, что вы можете использовать замыкание для реализации каррирования: вы можете построить вышеупомянутую функцию add1, создав замыкание, в котором этот первый параметр связан с 1.

...