challenge 不動点演算子

不動点演算子とは、関数を引数に取り、その関数の不動点を返すような関数です。 つまり、不動点演算子である関数gが関数fを引数に取るとき、 f(g(f)) = g(f) となります。

お題は不動点演算子を実装することです。(Yコンビネータを実装しても結構ですが、それ以外でも、コンビネータになっていなくてもOKとします)

Posted feedbacks - Ruby

Yコンビネータを愚直に実装しただけです。
    f = lambda {|g| lambda {|n| if n == 0 then 1 else n * g[n-1] end}}
    Y[f][5]  # => 120
とかやって遊びます。
1
2
3
4
Y = lambda {|f|
  g = lambda {|x| lambda {|*n| (f[x[x]])[*n]}}
  g[g]
}

Index

Feed

Other

Link

Pathtraq

loading...