Я пытаюсь понять, как метод программирования, известный как curry , отличается от обычного интерфейса обратного вызова (такого как интерфейсы Observer / Observable в Java или классический шаблон проектирования Visitor).
Я понимаю, что такое карринг, я просто не понимаю, почему он уникально полезен, поскольку требует собственной терминологии и языковой поддержки.
Может кто-нибудь объяснить ситуацию программирования лучшерешается карри, чем методом обратного вызова?Каково практическое значение того факта, что карри использует отдельную функцию для каждого аргумента?
[update:], чтобы суммировать полученные ответы: карри является неотъемлемой частью того факта, что функции являются гражданами «первого класса»объекты, которые могут быть созданы и переданы как любая другая ссылка на объект.Это позволяет вернуть функцию из функции, другими словами, каррирование.
Что касается причины, по которой карри полезно, то карри предоставляет синтаксис, позволяющий лаконично декорировать вызовы функций, чтобы можно было создавать производные функции с минимальными издержками кода.Принимая во внимание, что в Java вы можете создать несколько перегруженных или «обёрточных» методов для каждого частичного набора параметров, которые в конечном итоге вызывают мастер-метод, содержащий все параметры, каррирование обеспечивает более легкий синтаксис, который позволяет вам генерировать эти «обертки функций» так, как это необходимо в вашем коде.