challenge 不動点演算子

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

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

Posted feedbacks - Io

括弧の拡張機能を使って #5731#5733 の写経。(Yコンビネータは理解してない。)

1
2
3
4
5
6
7
8
9
Object do( curlyBrackets  := getSlot("block"))
Block  do( squareBrackets := getSlot("call"))

Y := { f,
  { g, f[{ a, g[g][a] }] }[
  { g, f[{ a, g[g][a] }] }]
}

Y[{ b, { n, if(n < 2, 1, n * b[n - 1]) } }][10] println

Index

Feed

Other

Link

Pathtraq

loading...