RosettaCodeData/Task/Factorial/Prolog/factorial-5.pro

15 lines
236 B
Prolog

:- use_module(lambda).
fact(N, FN) :-
cont_fact(N, FN, \X^Y^(Y = X)).
cont_fact(N, F, Pred) :-
( N = 0 ->
call(Pred, 1, F)
; N1 is N - 1,
P = \Z^T^(T is Z * N),
cont_fact(N1, FT, P),
call(Pred, FT, F)
).