No Programming, No Life

プログラミング関連の話題や雑記

Groovyで右からや指定した位置でカリー化する

♪右から、右から、カレー化しちゃ〜う〜

ええ、ちょっと古いネタでした。

いつのまにやらGroovyのClosureメソッドで#rcurryやら#ncurryやらできるようになってました。*1

軽い説明

メソッド 説明
#curry 普通のカリー化(左から)
#rcurry 右からカリー化
#ncurry 好きな場所をカリー化

使ってみた (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20)


このコードは#g100pon用に書いたものです。

補足

#rcurryの場合、上記のように二つの値でカリー化すると、右から二つ分をその順番でカリー化します。(c, dの順であってd, cの順でない点に注意)
本当に全部右からカリー化したいなら

func.rcurry(x).rcurry(y). …

とか

[35, 50].inject(func){ f, c -> f.rcurry(c) }

てな感じでしょうか。

ちなみに、#ncurryでindexを外れるとjava.lang.IllegalArgumentExceptionが発生します。まぁ、そうですよね。

*1:これは[http://groups.google.com/group/jggug/browse_thread/thread/a35e9abf90790391:title=#g100pon]で見つけました。