Я прочитал некоторые сообщения о закрытии и карри, но я чувствую, что не нашел ответа. Итак, каковы различия и, возможно, сходства закрытия и карри? Спасибо за помощь :)Каковы различия и возможные сходства замыканий и каррирования?
ответ
Currying - это действительно математическая концепция в первую очередь. Это просто наблюдение, что для любого п -ичных функций F: S × ... S п → R, вы можете определить новый функцию fprime (только что нашла уценку ошибки!) С n-1 параметры, где этот первый параметр заменен константой. Так что, если у вас есть функция add(a,b)
, вы можете определить новую функцию add1(b)
, как
add1(b) ::= add(1, b)
... Продолжить чтение «:: =» как «определяется как».
A Закрытие - это скорее концепция программирования. (Конечно, все в программировании также является математической концепцией, но закрытие стало интересным из-за программирования.) Когда вы строите замыкание, вы связываете одну или несколько переменных; вы создаете кусок кода, который связан с некоторыми переменными.
Отношение, которые вы можете использовать замыкание в целях реализации выделки: вы можете создать свою add1
функцию выше, сделав замыкание, в котором, что первый параметр привязан к 1.
То, что вы описали частичная оценка а не карри. Связанный, но не совсем то же самое. –