Advances in type systems for functional logic programming

Los lenguajes declarativos proporcionan un nivel de programación más alto y abstracto que los lenguajes imperativos tradicionales. Los lenguajes funcionales y los lógicos son los dos paradigmas declarativos más importantes, y su combinación ha sido un tema de investigación en las últimas dos décadas...

Descripción completa

Detalles Bibliográficos
Autor: Martín Martín, Enrique
Tipo de recurso: tesis de maestría
Fecha de publicación:2009
País:España
Repositorio:Docta Complutense
Idioma:español
OAI Identifier:oai:docta.ucm.es:20.500.14352/54580
Acceso en línea:https://hdl.handle.net/20.500.14352/54580
Access Level:acceso abierto
Palabra clave:004.42.046(043.3)
004.42.047(043.3)
Sistemas de tipos
Programación lógico funcional
Patrones de orden superior
Patrones opacos
Polimorfismo paramétrico
Definiciones locales
TOY
Type systems
Functional logic programming
Higher order patterns
Opaque patterns
Parametric polymorphism
Local definitions
Programación de ordenadores (Informática)
1203.23 Lenguajes de Programación
id ES_32ec03c0e65f657095306b7ff257eae3
oai_identifier_str oai:docta.ucm.es:20.500.14352/54580
network_acronym_str ES
network_name_str España
repository_id_str
dc.title.none.fl_str_mv Advances in type systems for functional logic programming
title Advances in type systems for functional logic programming
spellingShingle Advances in type systems for functional logic programming
Martín Martín, Enrique
004.42.046(043.3)
004.42.047(043.3)
Sistemas de tipos
Programación lógico funcional
Patrones de orden superior
Patrones opacos
Polimorfismo paramétrico
Definiciones locales
TOY
Type systems
Functional logic programming
Higher order patterns
Opaque patterns
Parametric polymorphism
Local definitions
Programación de ordenadores (Informática)
1203.23 Lenguajes de Programación
title_short Advances in type systems for functional logic programming
title_full Advances in type systems for functional logic programming
title_fullStr Advances in type systems for functional logic programming
title_full_unstemmed Advances in type systems for functional logic programming
title_sort Advances in type systems for functional logic programming
dc.creator.none.fl_str_mv Martín Martín, Enrique
author Martín Martín, Enrique
author_facet Martín Martín, Enrique
author_role author
dc.contributor.none.fl_str_mv López Fraguas, Francisco Javier
Universidad Complutense de Madrid
dc.subject.none.fl_str_mv 004.42.046(043.3)
004.42.047(043.3)
Sistemas de tipos
Programación lógico funcional
Patrones de orden superior
Patrones opacos
Polimorfismo paramétrico
Definiciones locales
TOY
Type systems
Functional logic programming
Higher order patterns
Opaque patterns
Parametric polymorphism
Local definitions
Programación de ordenadores (Informática)
1203.23 Lenguajes de Programación
topic 004.42.046(043.3)
004.42.047(043.3)
Sistemas de tipos
Programación lógico funcional
Patrones de orden superior
Patrones opacos
Polimorfismo paramétrico
Definiciones locales
TOY
Type systems
Functional logic programming
Higher order patterns
Opaque patterns
Parametric polymorphism
Local definitions
Programación de ordenadores (Informática)
1203.23 Lenguajes de Programación
description Los lenguajes declarativos proporcionan un nivel de programación más alto y abstracto que los lenguajes imperativos tradicionales. Los lenguajes funcionales y los lógicos son los dos paradigmas declarativos más importantes, y su combinación ha sido un tema de investigación en las últimas dos décadas. Los lenguajes lógico funcionales han heredado el clásico sistema Damas & Milner [20] de su parte funcional, debido a su simplicidad y popularidad, pero esta aproximación directa no funciona correctamente en todos los casos. Es conocido que los patrones de orden superior en los lados izquierdos de las reglas de programa pueden producir efectos no deseados desde el punto de vista de los tipos. En particular algunas expresiones pueden perder su tipo tras un paso de cómputo. En este trabajo proponemos una extensión del clásico sistema de tipos Damas & Milner que arregla esta situación. Este problema fue detectado por primera vez en [24], y la solución propuesta fue prohibir los patrones de orden superior opacos. Nosotros proponemos una forma más relajada de abordar este problema, haciendo una distinción entre variables transparentes y opacas. Una variable es transparente en un patrón si su tipo está unívocamente determinado por el tipo del patrón, y es opaca en otro caso. Nosotros prohibimos solamente la aparición de variables opacas cuando son usadas en los lados derechos de las reglas. Hemos desarrollado el sistema de tipos tratando de clarificar el comportamiento (desde el punto de vista de los tipos) que las declaraciones locales tienen en diferentes implementaciones de lenguajes funcionales y lógico funcionales. Éste es un aspecto que varía mucho, y usualmente no está bien documentado ni formalizado. Aparte del sistema de tipos presentamos algoritmos de inferencia de tipos para expresiones y programas, y proporcionamos un prototipo de implementación en Prolog que será integrado próximamente en el compilador de T OY [45, 69]. Hemos prestado especial atención a los aspectos formales del trabajo. Por ello hemos desarrollado demostraciones detalladas de las propiedades del sistema de tipos, en particular de la propiedad de preservación del tipo o subject reduction (las expresiones mantienen su tipo tras la evaluación), y la corrección y completitud de los algoritmos de inferencia con respecto al sistema de tipos. [ABSTRACT] Declarative languages provide a higher and more abstract level of programming than traditional imperative languages. Functional and logic languages are the two most important declarative programming paradigms, and their combination has been a topic of research in the last two decades. Functional logic languages have inherited the classical Damas & Milner type system [20] from their functional part, due to its simplicity and popularity, but this naive approach does not work properly in all cases. It is known that higher order patterns (HO) in left-hand sides of program rules may produce undesirable effects from the point of view of types. In particular some expressions can lose their type after a step of computation. In this work we propose an extension to the classical Damas & Milner type system that fixes this situation. This problem was first detected in [24], and the proposed solution was forbidding opaque HO patterns. We propose a more relaxed way of tackle this problem, making a distinction between transparent and opaque variables. A variable is transparent in a pattern if its type is univocally fixed by the type of the pattern, and opaque otherwise. We prohibit only the occurrence of opaque variables when they are used in the right-hand side of the rules. We have developed the type system trying to clarify the behavior (from the point of view of types) that local definitions have in different implementations of functional and functional logic languages. This is an issue that varies greatly, and it is not usually well documented or formalized. Apart from the type system we also present type inference algorithms for expressions and programs, and provide a prototype of implementation in Prolog that will be soon integrated into the T OY [45, 69] compiler. We have paid special attention to the formal aspects of the work. Therefore we have developed detailed proofs of the properties of the type system, in particular the subject reduction property (expressions keep their type after evaluation), and the soundness and completeness of the inference algorithms wrt. the type system.
publishDate 2009
dc.date.none.fl_str_mv 2009
2009-01-01
2009
2009-01-01
2023
2023-06-20
dc.type.none.fl_str_mv master thesis
http://purl.org/coar/resource_type/c_bdcc
info:eu-repo/semantics/masterThesis
format masterThesis
dc.identifier.none.fl_str_mv https://hdl.handle.net/20.500.14352/54580
url https://hdl.handle.net/20.500.14352/54580
dc.language.none.fl_str_mv Español
spa
language_invalid_str_mv Español
language spa
dc.rights.none.fl_str_mv open access
http://purl.org/coar/access_right/c_abf2
Atribución-NoComercial 3.0 España
https://creativecommons.org/licenses/by-nc/3.0/es/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv open access
http://purl.org/coar/access_right/c_abf2
Atribución-NoComercial 3.0 España
https://creativecommons.org/licenses/by-nc/3.0/es/
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Docta Complutense
instname:
instname_str
reponame_str Docta Complutense
collection Docta Complutense
repository.name.fl_str_mv
repository.mail.fl_str_mv
_version_ 1844180587464622080
spelling Advances in type systems for functional logic programmingMartín Martín, Enrique004.42.046(043.3)004.42.047(043.3)Sistemas de tiposProgramación lógico funcionalPatrones de orden superiorPatrones opacosPolimorfismo paramétricoDefiniciones localesTOYType systemsFunctional logic programmingHigher order patternsOpaque patternsParametric polymorphismLocal definitionsProgramación de ordenadores (Informática)1203.23 Lenguajes de ProgramaciónLos lenguajes declarativos proporcionan un nivel de programación más alto y abstracto que los lenguajes imperativos tradicionales. Los lenguajes funcionales y los lógicos son los dos paradigmas declarativos más importantes, y su combinación ha sido un tema de investigación en las últimas dos décadas. Los lenguajes lógico funcionales han heredado el clásico sistema Damas & Milner [20] de su parte funcional, debido a su simplicidad y popularidad, pero esta aproximación directa no funciona correctamente en todos los casos. Es conocido que los patrones de orden superior en los lados izquierdos de las reglas de programa pueden producir efectos no deseados desde el punto de vista de los tipos. En particular algunas expresiones pueden perder su tipo tras un paso de cómputo. En este trabajo proponemos una extensión del clásico sistema de tipos Damas & Milner que arregla esta situación. Este problema fue detectado por primera vez en [24], y la solución propuesta fue prohibir los patrones de orden superior opacos. Nosotros proponemos una forma más relajada de abordar este problema, haciendo una distinción entre variables transparentes y opacas. Una variable es transparente en un patrón si su tipo está unívocamente determinado por el tipo del patrón, y es opaca en otro caso. Nosotros prohibimos solamente la aparición de variables opacas cuando son usadas en los lados derechos de las reglas. Hemos desarrollado el sistema de tipos tratando de clarificar el comportamiento (desde el punto de vista de los tipos) que las declaraciones locales tienen en diferentes implementaciones de lenguajes funcionales y lógico funcionales. Éste es un aspecto que varía mucho, y usualmente no está bien documentado ni formalizado. Aparte del sistema de tipos presentamos algoritmos de inferencia de tipos para expresiones y programas, y proporcionamos un prototipo de implementación en Prolog que será integrado próximamente en el compilador de T OY [45, 69]. Hemos prestado especial atención a los aspectos formales del trabajo. Por ello hemos desarrollado demostraciones detalladas de las propiedades del sistema de tipos, en particular de la propiedad de preservación del tipo o subject reduction (las expresiones mantienen su tipo tras la evaluación), y la corrección y completitud de los algoritmos de inferencia con respecto al sistema de tipos. [ABSTRACT] Declarative languages provide a higher and more abstract level of programming than traditional imperative languages. Functional and logic languages are the two most important declarative programming paradigms, and their combination has been a topic of research in the last two decades. Functional logic languages have inherited the classical Damas & Milner type system [20] from their functional part, due to its simplicity and popularity, but this naive approach does not work properly in all cases. It is known that higher order patterns (HO) in left-hand sides of program rules may produce undesirable effects from the point of view of types. In particular some expressions can lose their type after a step of computation. In this work we propose an extension to the classical Damas & Milner type system that fixes this situation. This problem was first detected in [24], and the proposed solution was forbidding opaque HO patterns. We propose a more relaxed way of tackle this problem, making a distinction between transparent and opaque variables. A variable is transparent in a pattern if its type is univocally fixed by the type of the pattern, and opaque otherwise. We prohibit only the occurrence of opaque variables when they are used in the right-hand side of the rules. We have developed the type system trying to clarify the behavior (from the point of view of types) that local definitions have in different implementations of functional and functional logic languages. This is an issue that varies greatly, and it is not usually well documented or formalized. Apart from the type system we also present type inference algorithms for expressions and programs, and provide a prototype of implementation in Prolog that will be soon integrated into the T OY [45, 69] compiler. We have paid special attention to the formal aspects of the work. Therefore we have developed detailed proofs of the properties of the type system, in particular the subject reduction property (expressions keep their type after evaluation), and the soundness and completeness of the inference algorithms wrt. the type system.López Fraguas, Francisco JavierUniversidad Complutense de Madrid20232023-06-2020092009-01-0120092009-01-01master thesishttp://purl.org/coar/resource_type/c_bdccinfo:eu-repo/semantics/masterThesisapplication/pdfhttps://hdl.handle.net/20.500.14352/54580reponame:Docta Complutenseinstname:Españolspaopen accesshttp://purl.org/coar/access_right/c_abf2Atribución-NoComercial 3.0 Españahttps://creativecommons.org/licenses/by-nc/3.0/es/info:eu-repo/semantics/openAccessoai:docta.ucm.es:20.500.14352/545802025-08-02T12:44:52Z
score 15,638193