Uso prático de funções com caril?
Existem vários tutoriais sobre como curry funções e muitas perguntas aqui no stackoverflow. No entanto, depois de ler The Little Schemer, vários livros, tutoriais, postagens de blog e threads de fluxo de pilha, ainda não sei a resposta para a pergunta simples: "Qual é o sentido de currying?" Eu entendo como curry uma função, mas não o "por quê?" por trás disso.
Alguém poderia me explicar os usos práticos das funções com caril (fora de idiomas que permitem apenas um argumento por função, onde a necessidade de usar curry é obviamente bastante evidente).
editar: Levando em consideração alguns exemplos do TLS, qual é o benefício de
(define (action kind)
(lambda (a b)
(kind a b)))
em oposição a
(define (action kind a b)
(kind a b))
Só consigo ver mais código e sem flexibilidade adicional ...