Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: m@o_614 en 15 Diciembre 2013, 19:34 pm



Título: Singleton variables prolog
Publicado por: m@o_614 en 15 Diciembre 2013, 19:34 pm
Saludos, estoy haciendo mi primer programa en Prolog, es un simple árbol genealógico pero me aparece un warning que dice singleton variables[C,D] y no se que significa esto

los hechos del programa son del tipo padre(-,-) y madre(-,-).
hermanos(A,B):-padre(C,A),padre(C,B);madre(D,A),madre(D,B).
abuelo(E,A):-padre(E,padre(C,A)),padre(E,madre(D,A)).

?-abuelo(daniel,maria).

de antemano gracias


Título: Re: Singleton variables prolog
Publicado por: lnvisible en 22 Diciembre 2013, 19:52 pm
No debes poner una variable una sola vez, debes usar el símbolo _

Código
  1. hermanos(A,B):-padre(C,A),padre(C,B);madre(D,A),madre(D,B).
  2. abuelo(E,A):-padre(E,padre(_,A)),padre(E,madre(_,A)).
  3.  
  4. ?-abuelo(daniel,maria).
  5.  

Pero eso no tiene sentido, es así:

Código
  1. hermanos(A,B):-padre(C,A),padre(C,B),madre(D,A),madre(D,B).
  2. progenitor(A,B):-padre(A,B).
  3. progenitor(A,B):-madre(A,B).
  4. abuelo(E,A):-padre(E,B), progenitor(B,A).
  5.  
  6. ?-abuelo(daniel,maria).