タグ

ブックマーク / yarb.hatenadiary.org (1)

  • CRubyで末尾最適化を使った再帰 - yarbの日記

    Schemeなんかと違って、言語としてのRubyは末尾最適化(Tail Call Optimization)の実装は必須ではないけど、処理系としてのCRubyは2.0.0からオプション扱いで入っている、という話。2012年の6月ごろにはMatzさんはTCOをデフォルトにするという考えもあったようだけど、ここにある議論によれば、Ruby 2.0系のマイナーバージョンまで先延ばしになった模様。性急にTCOを入れなかった理由は、 バックトレースを失うので一般的なRuby利用者に影響が大きい set_trace_func()のサポートが大変 文法。ちゃんとドキュメントに落としこむのが難しい。これは半分冗談、半分気 ということらしい。JRubyでも、JVMがサポートしない限り実装が難しいという(あれ? Clojureは明示的な末尾呼び出しの最適化をやってるように思うけど)。 Rubyはイテレータで

    CRubyで末尾最適化を使った再帰 - yarbの日記
    takc923
    takc923 2017/02/05
  • 1