Eventuali duplicati:
Prolog delete: doesn't delete all elements that unify with ElementEliminazione di tutti i membri di una lista, senza unificazione in Prolog
In Prolog se si scrive questo:
delete([(1,1),(1,2),(1,1),(3,4)],(1,_),L).
il risultato sarà:
L = [ (1, 2), (3, 4)].
Ciò che è normale perché la variabile _ si lega con 1 nel primo elemento e cerca ulteriori elementi di (1,1) e li elimina.
C'è un modo per impedire che questa unificazione si verifichi e l'eliminazione di tutti i membri del modulo (1, _). In tal caso il risultato deve essere: L = [(3, 4)].
Lavori in linea di principio, ma si rompe se voci di elenco non sono sufficientemente istanziati nel momento in '/ 3' è gestito delete_pattern. – repeat