Bonjour,

Je débute en PROLOG et j'ai un petit souci.

Je vais simplifier mon problème car je pense que mon erreur est une erreur classique.

Soit la base de fait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
homme(toto).
homme(tata).
homme(tutu).
homme(titi).
La question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
homme(X). renvoie plusieurs solutions
Maintenant je voudrais créer une liste qui contienne toutes les solutions de
X Sans utiliser la fonction findall/3 .

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
liste([]).
liste([T|Q]):- liste(Q), !, homme(T).
Voila le résultat :
SWI Prolog me renvoie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
Pour liste(L).
L = [] ;
L = [toto] ;
L = [tata] ;
L = [tutu] ;
L = [titi] ;
Je voudrais donc enlever la liste vide et mettre tous les éléments dans L.
En fait, j'ai du mal avec les conditions d'arrêt de mes fonctions récursives.

Merci d'avance,