Compruebe si la variable está vacía o llena
Tengo el siguiente problema:
prologo prog
man(thomas, 2010).
man(leon, 2011).
man(thomas, 2012).
man(Man) :- once(man(Man, _).
problema:
?- man(thomas).
true ; %i want only on true even if there are more "thomas" *working because of once()*
?- man(X).
X = thomas ; %i want all man to be listed *isn't working*
Gol:
?- man(thomas).
true ;
?- man(X).
X = thomas ;
X = leon ;
X = thomas ;
No entiendo por qué sucede esto, pero todavía quiero obtener los nombres de todos los hombres. Así que mi solución sería mirar si se inicializa "Man", si es así que "una vez ..." o si no ... algo así:
man(Man) :- (->check<-,once(man(Man, _)); man(Man, _).
En "check" debe ser el código cortado que verifica si la variable "Man" está llena.
es posible?