Eu não acho que eu grocou currying ainda. Eu entendo o que faz e como fazê-lo. Eu simplesmente não consigo pensar em uma situação que eu usaria.
Onde você está usando o curry em JavaScript (ou onde as principais bibliotecas estão usando)? Manipulação de DOM ou exemplos gerais de desenvolvimento de aplicativos são bem-vindos.
Uma das respostas menciona animação. Funções como slideUp
, fadeIn
tomam um elemento como argumento e são normalmente uma função curry retornando a função de ordem superior com a “função de animação” padrão incorporada. Por que isso é melhor do que apenas aplicar a função superior com alguns padrões?
Existem desvantagens em usá-lo?
Conforme solicitado, aqui estão alguns bons recursos para currying JavaScript:
- http://www.dustindiaz.com/javascript-curry/
- Crockford, Douglas (2008) JavaScript: As Boas Peças
- http://www.svendtofte.com/code/curried_javascript/ (Desvia para o ML, pule a seção inteira de "Um curso intensivo no ML" e comece novamente em "Como escrever JavaScript ao curry")
- http://web.archive.org/web/20111217011630/http://blog.morrisjohns.com:80/javascript_closures_for_dummies
- Como funcionam os fechamentos de JavaScript?
- http://ejohn.org/blog/partial-functions-in-javascript (Sr. Resig sobre o dinheiro, como de costume)
- http://benalman.com/news/2010/09/partial-application-in-javascript/
Vou adicionar mais à medida que surgem nos comentários.
Portanto, de acordo com as respostas, curry e aplicação parcial em geral são técnicas de conveniência.
Se você está freqüentemente “refinando” uma função de alto nível chamando-a com a mesma configuração, pode curry (ou usar a função de nível superior da Resig) para criar métodos auxiliares concisos e simples.
svendtofte.com
parece estar morto - encontrei-o na máquina do WayBack em web.archive.org/web/20130616230053/http://www.svendtofte.com/… Desculpe, blog.morrisjohns.com/javascript_closures_for_dummies parece estar desativado também