Duplicar posibles:
Prolog delete: doesn't delete all elements that unify with ElementEliminación de todos los miembros de una lista sin unificación en Prolog
En Prolog si se escribe esto:
delete([(1,1),(1,2),(1,1),(3,4)],(1,_),L).
el resultado será:
L = [ (1, 2), (3, 4)].
Lo que es normal porque la variable _ se une con 1 en el primer elemento y busca más elementos de (1,1) y los elimina.
Hay una manera de evitar que ocurra esta unificación y eliminar todos los miembros del formulario (1, _). En ese caso, el resultado debe ser: L = [(3, 4)].
Obras en principio, pero si se rompe elementos de la lista no están suficientemente instanciados en el momento '/ 3' está dirigido delete_pattern. – repeat