Study and development of new functional syntactic extensions for Ciao Prolog
Loading...
Download
Official URL
Full text at PDC
Publication date
2024
Authors
Advisors (or tutors)
Editors
Journal Title
Journal ISSN
Volume Title
Publisher
Citation
Abstract
In programming languages, the idea of mixing programming paradigms is of interest, both for improving programmer productivity and convenience, and for enhancing language expressiveness and functionality. Some characteristics of the functional programming paradigm that it is attractive to carry over to other paradigms is the excellent support for higher order and the syntactic compactness. In this work we study these issues in the context of Prolog. There are multiple solutions for achieving higher order and other functional programming characteristics along with logic programming. Many of these change the semantics to include part of the semantics of functional languages, such as the simply typed lambda calculus, or to add fragments of higher-order logics, such as for example lambda term unification. In this work we concentrate instead on the Ciao Prolog system, which includes the possibility of programming in a functional style and using higher order, but without changing the underlying Prolog operational semantics. This approach is based on syntactic transformations, thanks to the language extension capabilities and module system of the Ciao language. We present new extensions that add functionality and improve the support in Ciao for functional notation and higher order, while continuing in the line of not changing the underlying Prolog semantics. The main idea is based on work done in 2004 the Hiord proposal, which has been revisited in this work through an analysis of similar solutions in other programming languages.
This work presents the current Ciao solution along with new extensions for functional notation, explores other languages with similar functionalities, and discusses their implementation.
En el área de lenguajes de programación, la idea de combinar paradigmas es de interés, tanto para mejorar la comodidad y productividad del programador, como para mejorar la expresividad y aumentar las funcionalidades del lenguaje. Una de las características del paradigma de la programación funcional que es atractivo trasladar a otros paradigmas es el excelente soporte del orden superior y la brevedad sintáctica. En este trabajo estudiamos estos temas en el contexto de Prolog. Existen múltiples propuestas para obtener orden superior y otras características de la programación funcional junto con la programación lógica. Muchas de ellas consisten en incorporar parte de la semántica de los lenguajes funcionales, como el cálculo lambda simplemente tipado, o añadir fragmentos de lógica de orden superior, por ejemplo definiendo la unificación de expresiones lambda. En este trabajo nos centramos sin embargo en la solución propuesta por el sistema Ciao Prolog, que incluye la posibilidad de programar en estilo funcional y con orden superior, pero sin cambiar la semántica operacional de su base en Prolog. Esta solución está basada en transformaciones sintácticas, gracias a las capacidades de extensión del lenguaje Ciao y su sistema de módulos. Presentamos nuevas extensiones que añaden funcionalidad y mejoran el soporte en Ciao de la notación funcional y del orden superior, siguiendo en la línea de no cambiar la semántica operacional de Prolog. La idea principal parte del trabajo realizado en 2004 sobre la propuesta Hiord, que se ha mejorado a través de un análisis de soluciones similares presentes en otros lenguajes de programación. En este trabajo se presenta la solución actual de Ciao junto con las nuevas extensiones para notación funcional, las soluciones ofrecidas por otros lenguajes con funcionalidades similares, y una discusión de su implementación.
En el área de lenguajes de programación, la idea de combinar paradigmas es de interés, tanto para mejorar la comodidad y productividad del programador, como para mejorar la expresividad y aumentar las funcionalidades del lenguaje. Una de las características del paradigma de la programación funcional que es atractivo trasladar a otros paradigmas es el excelente soporte del orden superior y la brevedad sintáctica. En este trabajo estudiamos estos temas en el contexto de Prolog. Existen múltiples propuestas para obtener orden superior y otras características de la programación funcional junto con la programación lógica. Muchas de ellas consisten en incorporar parte de la semántica de los lenguajes funcionales, como el cálculo lambda simplemente tipado, o añadir fragmentos de lógica de orden superior, por ejemplo definiendo la unificación de expresiones lambda. En este trabajo nos centramos sin embargo en la solución propuesta por el sistema Ciao Prolog, que incluye la posibilidad de programar en estilo funcional y con orden superior, pero sin cambiar la semántica operacional de su base en Prolog. Esta solución está basada en transformaciones sintácticas, gracias a las capacidades de extensión del lenguaje Ciao y su sistema de módulos. Presentamos nuevas extensiones que añaden funcionalidad y mejoran el soporte en Ciao de la notación funcional y del orden superior, siguiendo en la línea de no cambiar la semántica operacional de Prolog. La idea principal parte del trabajo realizado en 2004 sobre la propuesta Hiord, que se ha mejorado a través de un análisis de soluciones similares presentes en otros lenguajes de programación. En este trabajo se presenta la solución actual de Ciao junto con las nuevas extensiones para notación funcional, las soluciones ofrecidas por otros lenguajes con funcionalidades similares, y una discusión de su implementación.
Description
Trabajo de Fin de Master en Métodos Formales en Ingeniería Informática, Facultad de Informática UCM, Departamento de Sistemas Informáticos y Computación, Curso 2023/2024