2011-09-20 18 views
20

No encuentro ninguna documentación en el signo "no igual" en Visual Prolog. Proporcione la solución adecuada a este problema:¿Signo "No es igual" en Visual Prolog?

class predicates 
     sister : (string Person, string Sister) nondeterm(o,o). 
    clauses 
     sister(Person, Sister) :- 
      Person [not-equal-sign] Sister, 
      parent(Person, Parent), 
      parent(Sister, Parent), 
      woman(Sister). 

¡Gracias de antemano!

Respuesta

37

No sé lo que quiere usted decir con "es igual a" (no unifica?), Pero se puede probar estos:

X \= Y 
not(X = Y) 
\+ (X = Y) 
+1

¡Gracias, la segunda variante funcionó a la perfección! – Egor

+4

¿Hay diferencias entre estas opciones? – alaboudi

4

Documentación para la segunda variante señalado por Kaarel se puede encontrar en la página this Visual Prolog reference.

Sin embargo, el problema con su código es un poco más profundo. Es necesario esperar para la prueba de la no igualdad hasta que ambos términos persona y su hermana están obligados, por lo que reorganizar las cosas como esto:

sister(Person, Sister) :- 
     parent(Person, Parent), 
     parent(Sister, Parent), 
     not(Person = Sister), 
     woman(Sister). 

También hay sintaxis para un operador infijo "<>", que significa distinta (o diferente) Una vez que los dos términos están vinculados, esto debería dar el mismo resultado que verificar si los términos no se pueden unificar, que es lo que hace la construcción anterior.