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.