14 lines
236 B
Prolog
14 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)
|
|
).
|