名前のない再帰関数

PowerShellのパイプで再帰

再帰呼び出しでスタックオーバーフローします。
それだけ。

{& $_} | % {& $_}

Scalaの無名関数で再帰

Scalaの無名関数で再帰ができるのかどうか気になった。

object AnonymousRec {
  def main(args : Array[String]) : Unit = {
    //doesn't compile
//    {() => this()}.apply()
    //anonymous class
    new (Unit => Unit){
      override def apply(a : Unit){
        this()
      }
    }.apply()     
  }
}

無名関数ではthisが参照できなかったので失敗。
とりあえず無名クラスで試す。
this()はthis.apply()なのでこれは普通にapplyからapplyを呼んでいる気がする。
あんまり無名じゃない。
リフレクションを使ったら?

object AnonymousRec2 {
  def main(args : Array[String]) : Unit = 
    {_ : Unit =>
      //reflection
      Class.forName("AnonymousRec2$$anonfun$1").
        newInstance().asInstanceOf[Unit => Unit].apply()
    }.apply()
}

無名関数のnewInstance(無引数コンストラクタ)と
asInstanceOfによるキャストは問題なくできた。
いや、インスタンス作りすぎです。