タグ

ブックマーク / zecl.hatenablog.com (1)

  • ラムダとY Combinatorと私。Y Combinatorは恐ろしい子。 - Bug Catharsis

    再帰的な関数を作る場合に、その関数に名前をつけずに定義するにはどうすればよいの?*1 というのがY Combinatorの中心的話題のようだ。 つまり、不動点演算子を用いると、ラムダ式で再帰表現できるというお話。 f(x) = x なる x が不動点となるのであった。f(x) の具体的な式がわかれば不動点がわかるのは前述したとおりだが、わからない場合でもどうにかならないか、と考えてみる。そこで、この問題を抽象的に捉え、f(x) = x の条件を満たす x を算出する関数 g(f) を仮定してみるのだ。そうすると、f(x) = x なる x は g(f) であるので、x に g(f) を代入してもこの条件は成立するのであり、よって、f(g(f)) = g(f) が導かれる。 なんと、この f(g(f)) = g(f) が不動点演算子と呼ばれる、再帰を表す関数なのである。 元ネタフドーテンが倒

    ラムダとY Combinatorと私。Y Combinatorは恐ろしい子。 - Bug Catharsis
    starpos
    starpos 2009/02/11
    普通に再帰を使えばいいと思う.理論的におもしろいのであって代替手段はいくらでもある.
  • 1