http://groovy.codehaus.org/Closures の"Syntax for Defining a Closure"を見たら、クロージャの構文が{ <closureArguments> -> <statements> } となってます。今後は、仮引数と本体の区切りに矢印を使うようですね。
僕としては、矢印のほうが好み。キマイラ・サイトの記事「よく使う記法など」の「関数とラムダ記法」のところを見てもらうとわかるのだけど、<<仮引数リスト> |→ <定義の本体>> という構文をインフォーマルなラムダ記法に採用しようとしているので、これとほとんど同じ書き方になるもんね。(どうでもいいことだけど。)
んで、全体の印象としては、ラムダ式を実感するのにgroovyのクロージャはけっこうイイのでは、と思います。計算機構が違うので、完全に挙動が同じにはなりませんが、常識的な高階関数は素直に書けます。純関数型ではないので、かえって(普通の人には)書きやすいでしょう。例えば、i=nからmまでの関数値f(i)の総和Σf(i)は次のように書けます。
Sigma = {|n, m, f|
int total = 0
// for構文がまだ使えないので
// whileにする
int i = n
while(i <= m){
total += f(i)
i++
}
total
}println Sigma(1, 10, {|x| x}) // 1 + 2 + ... + 10
println Sigma(1, 10, {|x| x * x }) // 1^2 + 2^2 + ... + 10^2
ラムダ計算の教科書は、昔だと、Hindley & Seldin の"Introduction to Combinators and λ-Calculus" 1986 が定番だったけど、今は入手できないみたい。日本語では、[1]や[2]にモダンな説明があります。
- [1] 型付きラムダの詳しい解説
- 作者: 大堀淳
- 出版社/メーカー: 共立出版
- 発売日: 1997/02
- メディア: 単行本
- クリック: 55回
- この商品を含むブログ (17件) を見る
- [2] 圏論を用いた定式化も載ってます
- 作者: 横内寛文
- 出版社/メーカー: 共立出版
- 発売日: 1994/06/01
- メディア: 単行本
- 購入: 2人 クリック: 57回
- この商品を含むブログ (17件) を見る
いずれの教科書も、覗き見で済ませるには本格的過ぎる。もう少しお気軽な資料はないものか?とgoogleを引いてみる -- googleトップに出る「ラムダ計算ABC」(http://members.at.infoseek.co.jp/nbz/ref/lambda.html)は短くてトッテモ面白いです。けど、お気軽/お手軽な解説とはチョット違うかな。
(groovyとラムダ式、オシマイ)