java + prolog
DESCRIPTION
E J Hernández Valdelamar. Sesión adicional del Xtreme Prolog. Trata el tema de la implementación de Prolog con Java. 2001.TRANSCRIPT
Prolog + Java
Xtreme PrologEugenio Jacobo Hernández Valdelamar
México, 2001
ContenidoProlog + JavaCaracterísticas de W-PrologEjemplos de uso
ObjetivoPara empezar no hay un curso en el mundo que se meta con esta fusión.La meta de mezclar ambos lenguajes es:
Indagar sobre la implementación de PrologMostrar esquemas prácticos de la aplicación de Prolog (como que tener un programita ejecutándose solo en una máquina le falta emoción)
Como fusionar Java + prologJava puede implementar una máquina Prolog ( interprete/compilador) como una aplicación, appletLas clases generadas de esta implementación pueden integrarse en otros programasJava puede conectarse a una herramienta Prolog por medio de protocolos o aprovechando plug-ins o componentes
Arquitectura de una solución hibrida Java + Prolog
W-Prolog
W-Prolog como applet
Subconjunto de Prolog implementado por el W-Prolog
Program ::= Rule | Rule Program Query ::= Term
Rule ::= Term . | Term :- Terms . Terms ::= Term | Term , TermsTerm ::= Number | Variable | AtomName | AtomName(Terms) | [] | [Terms] | [Terms | Term] | print(Term) | nl | eq(Term , Term) | if(Term , Term , Term) | or(Term , Term ) | not(Term) | call(Term) | once(Term) Number ::= Digit | Digit Number Digit ::= 0 | ... | 9 AtomName ::= LowerCase NameChars Variable ::= UpperCase NameChars NameChars ::= NameChar | NameChar NameChars NameChar ::= a | ... | z | A | ... | Z | Digit
Diseño de W-Prolog
Ejemplo
Probar con: isa(X,Y) isa(X,human), has(X,Y), cando(X,fly)
En qué cambia?Es un subconjunto de Prolog (no se puede usar p.ej. “_” en la definición de predicados)La organización del código tiene restricciones
clauses defining a predicate need to be contiguous. So, for example, use: a :- b. a :- c. b :- defn. c :- defn. and not: a :- b. b :- defn. a :- c. c :- defn.
Se gana al contar con todas las capacidades de Java
TareaInstalar el JDK 1.2.* o superior en sus máquinasCon uno de los programas que ya tenemos hechos, probar el W-Prolog en su forma de applet. ¿Qué capacidades tiene la herramienta?Con el programa de ejemplo (GO) prueba las capacidades del W-PrologQué se te ocurre que puede hacerse con esta fusión de lenguajes?
ReferenciasPractical Development of Internet Prolog Applications using a Java Front End
W-Prolog http://goanna.cs.rmit.edu.au/~winikoff/wp/