FrilFril es un lenguaje de programación para el cálculo de predicados de primer orden. Trabaja con un subconjunto de la semántica del lenguaje Prolog pero no del estándar ISO-PROLOG, sino con la sintaxis de micro-PROLOG, un dialecto desarrollado a principios de la década de 1980, añadiéndole soporte para conjuntos difusos, lógica de apoyo y metaprogramación. Las primeras versiones de Fril fueron originalmente desarrolladas por Trevor Martin y Jim Baldwin en la Universidad de Bristol en torno a 1980. En 1986, pasó a manos del Equipu AI Research, que más tarde se convirtió en Fril Systems Ltd., que se encargó de la implementación y desarrollo de las versiones actuales del lenguaje. El nombre Fril era originalmente un acrónimo de Fuzzy Relational Inference Language (en español "Lenguaje de inferencia difusa relacional"). Prolog y Fril comparadosAparte de la gestión de lógica difusa, característica de Fril, hay algunas diferencias de menor importancia en la aplicación a Fril de características estándar de Prolog. TiposLos tipos básicos en Fril son similares a los de Prolog, con una excepción importante: el tipo de dato compuesto en Prolog es el término compuesto, listas de átomos usando un átomo como "functor" y el resto como "argumentos", definidas usando ".", en Fril, el tipo compuesto es la propia lista, lo que constituye la base para la mayoría de las construcciones. Las variables se distinguen por los identificadores de las mismas, que se escriben en su totalidad en letras mayúsculas (mientras que en Prolog sólo se requiere que la primera letra del nombre de la variable sea en mayúsculas). Como en Prolog, el carácter "_" está reservado para significar "ningún valor", lo que se traduce en que puede haber múltiples apariciones de "_" sustituyendo a diferentes variables indistintamente. SintaxisComparadas las sintaxis del Prolog y el Fril, este último tiene una sintaxis más simple y en algunos aspectos similar a la de Lisp. Una cláusula proposicional es una lista compuesta de un predicado seguido de sus argumentos (si los hubiera). Entre los tipos de construcciones de nivel superior son las reglas y los comandos de modo directo. ReglasUna regla es una lista que consiste en una conclusión seguida de la hipótesis (objetivos). Tienen en general el siguiente aspecto: ((dato)) ((conclusion objetivo_1 ... objetivo_n)) La construcción equivalente en Prolog sería: dato. conclusion :- objetivo_1, ..., objetivo_n. Por ejemplo, el predicado member(E, [E|_]). member(E, [_|T]) :- member(E, T). En Fril, esto sería: ((member E (E|_))) ((member E (_|T)) (member E T)) RelaciónAlgunos datos pueden ser representados en forma de relaciones. Una relación es equivalente a un conjunto de hechos con el mismo nombre de predicado y de aridad constante, salvo que ninguno de los hechos se pueden quitar (excepto con el comando He aquí un ejemplo. El siguiente conjunto de hechos: ((menor-que 2 3)) ((menor-que 8 23)) ((menor-que 42 69)) puede ser reescrito como una relación: (menor-que (2 3) (8 23) (42 69)) DisyunciónPara este propósito Prolog usa un signo de puntuación ";". Fril usa el predicado Referencias
Enlaces externos
|