ついったーで評判が良かった(?)ので紹介。
日本語DSLです。Scalaのを見て書いてみました。
http://jggugcode.appspot.com/view.groovy?id=2011
Object.metaClass.getの = {delegate} Object.metaClass.getを = {delegate} Object.metaClass.getが = {delegate} Object.metaClass.getする = {delegate} Object.metaClass.getで = {delegate} Object.metaClass.getし = {delegate} Object.metaClass.getかつ = {delegate} Object.metaClass.getならば = {delegate} Object.metaClass.get平方根 = {Math.sqrt(delegate as Double)} Object.metaClass.get表示 = {println delegate;delegate} Object.metaClass.get二倍 = {delegate * 2} Object.metaClass.もし = {Closure clos->delegate.grep(clos)} Object.metaClass.のうち、 = {Closure clos->delegate.grep(clos)} List.metaClass.それぞれに対して = {clos->delegate.each(clos)} Object.metaClass.と = {[delegate, it]} List.metaClass.と = {delegate+it} Integer.metaClass.から = {new IntRange(delegate,it)} def 倍数(x) {return {it % x == 0}} 奇数 = {it % 2 == 1} 100.の.平方根.を.表示.する 1.と(2).と(3).で.もし(奇数).ならば.それぞれに対して{それ-> それ.の.二倍.を.表示.する } 1.から(100).のうち、(倍数(3)).かつ.もし(倍数(2)).それぞれに対して{それ-> println(それ+'は6の倍数です') }
みてわかるように'.'が余分ですが、英語ベースだともっと悲惨な感じになっているでしょうかね。
ここでは「それ」を明示的にクロージャ引数としてうけてますが、前に試しに作ったようなAST変換(@Define)を使えば「暗黙のそれ」が使えるようにできると思います。
#「暗黙のそれ」ってなんか怖いな・・。