前回のエントリー http://d.hatena.ne.jp/kya-zinc/20091205/1259999256 を考え直した。 要するに無名関数からthis(自分自身の参照)が見えればよいので applyの引数として渡してやる。 呼び出しにはもう一つの無名関数f => f(f)を使ってやる。 object AnonymousRec3 { def main(args : Array[String]) : Unit = {(f : Any => Unit) => f(f)}.apply({ g : Any => println("hoge") g.asInstanceOf[Any => Unit].apply(g) }) } ラムダで書くと(\f.f(f))(\g.g(g))。バックスラッシュはラムダと思いねえ。 ただまともな型はつけられそうにないので Anyにしておいてキャストっすか