En el ámbito de la programación lógica los sistemas tienen una estructura que está dada por : una base de datos - conformada por definiciones (facts) y reglas - más un intérprete que acepta consultas y las responde extrayendo información y operando sobre la base de datos. Se pide desarrollar: un intérprete que, frente a consultas con todos los parámetros instanciados, responda afirmativamente o negativamente a dichas preguntas. Las reglas deben leerse como una relación de implicación lógica, es decir que si se cumplen los objetivos de la derecha del operador :- , se cumple el objetivo de la izquierda y en definitiva la consulta tiene como respuesta SI, de lo contrario la respuesta es NO. Las letras mayúsculas indican variables sin instanciar . Las variables son sólo válidas dentro de una regla, por lo cual si aparecen en más de una regla representan ítems diferentes aunque tengan igual nombre. Para acotar el alcance del problema las reglas serán compuestas solamente por conjunción de facts indicados por comas y debe tomarse a los objetivos (facts que componen a las reglas) como definiciones con sus parámetros sin instanciar. Se pide implementarlo utilizando programación funcional
varon(juan). varon(pepe). varon(hector). varon(roberto). varon(alejandro). mujer(maria). mujer(cecilia). padre(juan, pepe). padre(juan, pepa). padre(hector, maria). padre(roberto, alejandro). padre(roberto, cecilia). hijo(X, Y) :- varon(X), padre(Y, X). hija(X, Y) :- mujer(X), padre(Y, X).
padre(juan, pepe) → SI padre(mario, pepe) → NO hijo(pepe, juan) → SI hija(maria, roberto) → NO El sistema debe tomar la base de datos desde un archivo de texto y poder responder las consultas ingresadas por consola.
- Tp individual
- Implementado en Clojure
- Implementado con Test Unitarios
- Utilización de repositorio Git en la cuenta informada de Github
- Fecha de Entrega: Antes del Lunes 11 de Septiembre 20hs via Github
- Crear y trabajar sobre un repositorio llamado 7510-TP1-Funcional
- Etiquetar en el github personal la entrega como: entregaTP1