Analizadores sintácticos monádicos

Un analizador sintáctico es un programa que analiza cadenas de símbolos y permite transformarlas en algún tipo de representación más estructurada. Por otra parte, en programación funcional, una mónada es una estructura que representa una forma de computación, y favorece la programación con efectos de forma genérica. El análisis sintáctico es uno de los muchos problemas que las mónadas ayudan a simplificar.

Seguir leyendo »

Transformación automática de programas

Toda cláusula Prolog es un término Prolog válido, lo cual implica que podemos analizar y procesar código Prolog utilizando predicados y características incorporadas del propio lenguaje. Esto es especialmente conveniente a la hora de definir transformaciones automáticas de programas. Aunque el estándar ISO Prolog no define ningún mecanismo de transformación de programas tales como la expansión de macros o la compilación condicional, todos los sistemas Prolog ampliamente utilizados proporcionan predicados que permiten reescribir código en tiempo de compilación.

Seguir leyendo »

Gramáticas de cláusulas definidas

Las gramáticas de cláusulas definidas (DCG's) permiten representar una gramática formal como un conjunto de cláusulas definidas en una lógica de primer orden. Estas DCG's proporcionan a los lenguajes de programación lógicos como Prolog una forma conveniente y efectiva de expresar gramáticas, resultando especialmente útiles en el procesamiento de lenguajes naturales y de lenguajes formales.

Seguir leyendo »

Programación a nivel de tipo

La programación a nivel de tipo implica codificar cierta lógica en el sistema de tipo del lenguaje, que es evaluada y comprobada en tiempo de compilación. Uno de los ejemplos más típicos es el de los vectores con longitud indexada, que añaden la longitud de la lista en el sistema de tipo, evitando estáticamente errores de "fuera de límites".

Seguir leyendo »

Estructuras de datos incompletas

Las estructuras de datos incompletas proporcionan una técnica de programación propia de Prolog que permite incrementar la eficiencia de los programas lógicos y simplificar su diseño. Estas estructuras se apoyan en el uso de variables lógicas para representar huecos, los cuales simbolizan partes de las estructuras que todavía no han sido computadas. La estructura incompleta más utilizada es la lista diferencia.

Seguir leyendo »