Une modification utile à enlever1 : on souhaite ôter la première occurrence de l'élément dans la
liste, sans aller chercher plus loin. On écrira donc :
enlever_prem(E, [E|S], S) :- !.
enlever_prem(E, [X|S], [X|T]) :- enlever_prem(E, S, T).
signifiant ainsi que la seconde clause ne sera utilisée que si la première n'a pas été filtrée, ce qui
est bien notre volonté.
Exemple : enlever_prem(a, [b, a, d, a, c], X). ---> X = [b, d, a, c]
· Autre variante utile de enlever1 : – enlever toutes les occurrences "d'un seul coup"
enlever_tout(E, L, R) :- enlever1(E, L, T), !, enlever_tout(E, T, R).
enlever_tout(E, L, L).
Exemple . enlever_tout(a, [b, a, c, a, d], X). ---> X = [b, c, d]
Partager