04 - Prolog Flashcards
¿Como se ingresa un hecho?
likes(john, flowers).
likes(john, chicks).
likes(john, mangoes).
hates(john, oranges).
dislikes(john, study).
¿Como se hace una pregunta?
?- likes(john, mangoes). true
o
tambien se puede preguntar:
?- likes(john, X) X = flowers
- X es una variable, las variables empiezan con una letra mayuscula.
- Devuelve la primer cosa que le gusta a john. Con punto termina con semicolon continua.
Como se usa la recursividad en prolog?
Si tengo los hechos y reglas:
padre(luis, carlos) padre(carlos, charly). padre(charly, santi). ancestro(X, Y) :- padre(X,Y). ancestro(X,Z) :- padre(X,Y) , padre(Y,Z).
Luego puedo preguntar:
~~~
?- ancestro(luis, santi).
~~~
Como se interpreta la siguiente consulta?
likes(john, X) :- person(X).
- Se puede leer: “john likes x IF X is a person”
Como se encuentra un elemento en una lista?
Encontrar un elemento en una lista, primero definimos la búsqueda en el KB
~~~
member(X,[X|]).
member(X,[|T]) :- member(X,T).
~~~
- Primero se pregunta si X es parte del head.
- En segundo lugar si X es parte del tail
Luego se pregunta si 3 es parte de la lista:
?- member(3,[1,2,3,4]).
Como se hacen las preguntas anonimas?
De forma anónima, solo quiero saber si existe ago que odia john:
?- hates(john,_)
La respuesta sera true (porque en la base tengo la regla: hates(john, oranges). )