不動点演算子
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.
|

matarillo
#5680()
Rating2/4=0.50
不動点演算子とは、関数を引数に取り、その関数の不動点を返すような関数です。 つまり、不動点演算子である関数gが関数fを引数に取るとき、 f(g(f)) = g(f) となります。
お題は不動点演算子を実装することです。(Yコンビネータを実装しても結構ですが、それ以外でも、コンビネータになっていなくてもOKとします)
see: Wikipedia
[ reply ]