Le prédicat ci-dessous ajoute l'élément X à la liste S. Cela fonctionne très bien.Prolog: ajouter la liste pour définir
addToSet(X, S, S) :-
atomic(X),
member(X, S),
!.
addToSet(X, S, [X|S]) :-
atomic(X).
Je suis en train de l'étendre à un prédicat qui ajoute la liste [H | T] pour régler S. Il fonctionne parfaitement si [H | T] est seulement 2 articles à long ... à savoir si T est également atomique.
addToSet([], S, S).
addToSet([H,T], S, S2) :-
addToSet(H, S, S1),
addToSet(T, S1, S2).
Par exemple, addToSet ([5,6], [1,2,3,4], X). fonctionne comme je le désire. Cependant, addToSet ([5,6,7], [1,2,3,4], X). Ça ne foncrionne pas du tout. Je suis perplexe ... il y a évidemment quelque chose qui ne va pas avec les 2-3 dernières lignes de mon code, mais je ne peux pas le comprendre. Des conseils?
Merci!
envisager de vérifier les prédicats liés à l'ensemble (s'il existe dans votre système prolog) pour swi-prolog, voici quelques http://www.swi-prolog.org/pldoc/doc_for?object=section%282,% 27A.12% 27, swi% 28% 27/doc/Manual/lists.html% 27% 29% 29 –