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 ...

questionAnswers(8)

yourAnswerToTheQuestion