クロージャのカリー化が面白い

Groovyイン・アクション の 5.4.2 クロージャのメソッドについて の クロージャのカリー化 らへんで軽くはまった。
何となくは理解出来てる気がするけど、完全に理解出来てない気がする (´・ω・`)
やっている事自体は本に書いてある通り

複数の引数をとる関数を取り上げ、それをより少ない引数の関数へ値を固定する事により変換する

だっつーのは分かるんですが、具体的に ここに使える! ってのが思いつけてない (´・ω・`)
とりあえず挙動を理解する為に

def adder = { int x, int y -> x + y}
def addOne = adder.curry(1)
def addNone = adder.curry(1, 5)
def addNone_other = addOne.curry(5)

assert addNone () == addNone_other ()

とか試して、動き自体は納得なんですけどねー。
ちなみに上記のに追加で

def addNone_failed = addNone.curry(10)
println addNone_failed ()

とかすると

Caught: groovy.lang.MissingMethodException: No signature of method: test$_run_closure1.call() is applicable for argument types: (java.lang.Integer, java.lang.Integer, java.lang.Integer) values: {1, 5, 10}
	at test.run(test.groovy:12)
	at test.main(test.groovy)

とか言われてこけますねー、あたりまえっちゃー当たり前ですが。


本だとログ出力周りがこんなに簡単にくめちゃうぜ!っていう例が載ってるんですが、これ以上の規模の物でカリー化を多様したら保守性最悪のコードになりそうな気がするんだよなぁ。
引数10個をカリー化で1個まで省略して・・・とかやってたら、一週間後に自分で読んでもはまりそう。
どういう所で使うのが良いんだろうなー。