Я не думаю, что я грэк карри еще. Я понимаю, что он делает, и как это сделать. Я просто не могу придумать ситуацию, которую я бы использовал.
Где вы используете каррирование в JavaScript (или где его используют основные библиотеки)? Приветствуются манипуляции с DOM или общие примеры разработки приложений.
В одном из ответов упоминается анимация. Такие функции, как slideUp
, fadeIn
принимают элемент в качестве аргументов и обычно являются карри-функцией, возвращающей функцию высокого порядка со встроенной «функцией анимации» по умолчанию. Почему это лучше, чем просто применять функцию более высокого уровня с некоторыми значениями по умолчанию?
Есть ли недостатки в его использовании?
Как и просили, вот несколько хороших ресурсов по каррированию JavaScript:
- http://www.dustindiaz.com/javascript-curry/
- Крокфорд, Дуглас (2008) JavaScript: хорошие части
- http://www.svendtofte.com/code/curried_javascript/ (Делает обходной путь в ML, поэтому пропустите весь раздел из «Ускоренного курса в ML» и начните снова с «Как писать каррированный JavaScript»)
- http://web.archive.org/web/20111217011630/http://blog.morrisjohns.com:80/javascript_closures_for_dummies
- Как работают закрытия JavaScript?
- http://ejohn.org/blog/partial-functions-in-javascript (мистер Ресиг о деньгах как обычно)
- http://benalman.com/news/2010/09/partial-application-in-javascript/
Я добавлю больше, как они появляются в комментариях.
Итак, согласно ответам, карри и частичное применение в целом являются удобными техниками.
Если вы часто «дорабатываете» высокоуровневую функцию, вызывая ее с одинаковой конфигурацией, вы можете каррировать (или использовать частичку Resig) высокоуровневую функцию для создания простых, лаконичных вспомогательных методов.
svendtofte.com
выглядит мертвой - нашел ее на компьютере WayBack, хотя на web.archive.org/web/20130616230053/http://www.svendtofte.com/… Извините, blog.morrisjohns.com/javascript_closures_for_dummies, кажется, не работает тоже