http://javac.info/というサイトがあるのですが、JDK7から実装される予定のクロージャの仕様検討を行っているサイトです。
JDK7からのクロージャについてはEBNFレベルではよく見ていたのですが、その構文を使った実装コードも出てきたようです。
http://javac.info/jsr166z.ztar
これは、JDK7から追加されるFork-Joinフレームワークにクロージャを取り入れた実装です。一部のコードを抜粋すると、
public static final { long, long => long } longAdder = { long x, long y => x + y };
public static final class
NaturalMinReducer<T extends Comparable<? super T>>
implements { T, T => T } {
NaturalMinReducer(Class<T> type) {}
public T invoke(T a, T b) {
return (a != null &&
(b == null || a.compareTo(b) <= 0))? a : b;
}
}
public static final class IntMinReducer implements { int, int => int } {
final { int, int => int } comparator;
public IntMinReducer({ int, int => int } comparator) {
this.comparator = comparator;
}
public int invoke(int a, int b) {
return (comparator.invoke(a, b) <= 0)? a : b;
}
}
という感じです。う~ん、面白いですね。ラムダ式はかなり魅力的です。