challenge 不動点演算子

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

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

Posted feedbacks - Prolog

Prologです。

実行例:

?- fix(fact_maker, 10, X).
X = 3628800.
1
2
3
4
5
6
7
8
fix(F, A, R) :-
    call(F, call(fix, F), A, R).

fact_maker(_, 0, 1) :- !.
fact_maker(F, N, R) :-
    N1 is N - 1,
    call(F, N1, FN1),
    R is N * FN1.

Index

Feed

Other

Link

Pathtraq

loading...