1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| :- dynamic(nombre/1).
eleve(marie).
eleve(maria).
eleve(louis).
eleve(damien).
eleve(frederic).
famille(marie, louis).
famille(damien, frederic).
nb_callable(Predicat, Z) :-
retractall(nombre(_)),
assert(nombre(0)),
Pred =.. Predicat,
forall(call(Pred), (nombre(X),
retract(nombre(X)),
X1 is X+1,
assert(nombre(X1)))),
nombre(Z).
essai :-
eleve(_) =.. Pred,
nb_callable(Pred, Z),
write('Nombre de faits pour eleve : '), writeln(Z),
famille(_,_) =.. Pred1,
nb_callable(Pred1, Z1),
write('Nombre de faits pour famille : '), writeln(Z1). |
Partager