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...
| Autor: | |
|---|---|
| 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 |