2010-03-02 13 views

Respuesta

5

Significa que su programa se implementa como un conjunto de reglas, y los datos también se implementan como un conjunto de reglas: no hay distinción entre una regla que hace que algunas operaciones sucedan (un programa) y una regla que simplemente devuelve un valor de datos.

4

Esto se refiere a que los términos son datos, pero el programa también se describe en términos.

1
?- A=write(B), C=(B is 1+2), Prog = (C, A). 
A = write(B), 
C = (B is 1+2), 
Prog = (B is 1+2, write(B)). 

?- $Prog. 
3 
true. 
6

Prolog fuente es solo una lista de reglas. Algunas reglas son solo "datos": son true sin más evaluación.

person(james). 
father(james, thomas). 

"James es una persona." "James es el padre de Thomas".

Estas reglas son los datos.

Puedo realizar una consulta con estos datos. Puedo pregunto:

?- person(X). 

La respuesta será:

X = james. 

O:

?- father(X, thomas). 

la respuesta será la misma.

Otras reglas necesitan una evaluación adicional.

grandfather(X, Z) :- father(X, Y), father(Y, Z). 

Este es un simple "programa".

Nuestro programa de abuelo se evaluará como verdadero si tenemos los datos correctos. Por ejemplo:

father(james, william). 
father(james, tyler). 
father(james, thomas). 
father(jeff, james). 

Si ejecuto el siguiente programa:

?- grandfather(jeff, X). 

me sale:

X = william 

puedo pedir prólogo para continuar y conseguiré X = tyler y X = thomas.

La sintaxis se vuelve más complicada, pero los conceptos básicos son los mismos. Los datos y el programa son solo un conjunto de hechos. El arte de prolog es hacer las reglas correctas que conducen el cálculo a un resultado.

+0

Gracias. Excelente respuesta –

4

Solo para ponerme el sombrero de mi pedante, el nombre para esto es: homoiconic. Hay mucho sobre esto: Machine Code es, también, homoicónico.

Cuestiones relacionadas