Hello, Dušan!
> This is not Prolog, it is a Prolog with CLP extension over integers.
as well as Haskell has a lot of extensions. I mentioned CLP as solver but modern Prologs is not ISO only and has a lot of solvers (CHR, different CLP, FuzzyLogic, Tabulating, etc). Actually CLP(x) in included in most modern implementations.
Hello PY/Paul,
You are using misleading arguments!
This is not Prolog, it is a Prolog with CLP extension over integers.
>
> factorial(0, 1).
> factorial(N, F) :-
> N #> 0,
> N1 #= N - 1,
> F #= N * F1,
> factorial(N1, F1).
>
> I can call it: factorial(5, X) => X=120.
> But also: factorial(X, 120) => X=5.
>
Pure Prolog is:
factorial(0, 1) :- !.
factorial(N, F) :-
NN is N - 1,
factorial(NN, FF),
F is FF * N.
which is a function, not a relation, as you write.
Dušan Kolář