Chequeo de tipos eficiente para Path Polymorphism

Autores
Edi, Juan Ignacio
Año de publicación
2015
Idioma
español castellano
Tipo de recurso
tesis de grado
Estado
versión publicada
Colaborador/a o director/a de tesis
Bonelli, Eduardo Augusto
Viso, Andrés Ezequiel
Descripción
Recientemente fue propuesto un sistema de tipos que combina tipos aplicativos, constantes, unión y recursivos, para capturar estáticamente la noción de Path Polymorphism. Esto se refiere a la capacidad de operar uniformemente sobre estructuras de datos aplicativas definidas de forma recursiva, utilizando una misma función. La esencia de esta característica se manifiesta en patrones de la forma x y, que permiten descomponer una estructura de datos arbitraria en las partes que la conforman. En el presente trabajo estudiamos el problema de type checking para este sistema, realizando esta labor en dos etapas. Primero introducimos un prototipo de implementación que abarca el proceso completo, incluyendo algoritmos para chequeo de equivalencia de tipos y subtipado basados en una caracterización conductual de estas relaciones. Se utilizó Haskell para este primer enfoque, para sacar provecho de la naturaleza funcional del problema. Una vez identificadas las limitaciones del prototipo, se propuso una implementación robusta y eficiente que reduce la complejidad de los pasos clave dentro del proceso, principalmente el chequeo de subtipado. Esta segunda implementación se desarrolló en Scala, utilizando una representación más conveniente para las expresiones de tipos basada en grafos cíclicos.
A type system combining type application, constants as types, union types and recursive types has recently been proposed for statically typing Path Polymorphism, the ability to define functions that can operate uniformly over recursively specified applicative data structures. A typical pattern such functions resort to is x y which decomposes a compound, in other words any applicative tree structure, into its parts. We study type-checking for this type system in two stages. First we introduce a prototype implementation of the whole process that also involves algorithms for checking type equivalence and subtyping based on coinductive characterizations of those relations. We used Haskell for this first approach, to benefit from the functional nature of the problem. After identifying the limitations of the prototype, we propose an efficient and robust implementation that reduces complexity of the key part of the process, namely subtyping check. This was done on Scala using a more convenient representation for type expressions based on cyclic graphs.
Fil: Edi, Juan Ignacio. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
Materia
CALCULOS DE PATRONES
CHEQUEO DE TIPOS
PATH POLYMORPHISM
TIPOS RECURSIVOS
OPERADORES ACI
PATTERN CALCULI
TYPE CHECKING
PATH POLYMORPHISM
RECURSIVE TYPES
ACI OPERATORS
Nivel de accesibilidad
acceso abierto
Condiciones de uso
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
Repositorio
Biblioteca Digital (UBA-FCEN)
Institución
Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
OAI Identificador
seminario:seminario_nCOM000673_Edi

id BDUBAFCEN_1c13d4c1034b723f242481ecb4320ce1
oai_identifier_str seminario:seminario_nCOM000673_Edi
network_acronym_str BDUBAFCEN
repository_id_str 1896
network_name_str Biblioteca Digital (UBA-FCEN)
spelling Chequeo de tipos eficiente para Path PolymorphismEfficient type checking for path polymorphismEdi, Juan IgnacioCALCULOS DE PATRONESCHEQUEO DE TIPOSPATH POLYMORPHISMTIPOS RECURSIVOSOPERADORES ACIPATTERN CALCULITYPE CHECKINGPATH POLYMORPHISMRECURSIVE TYPESACI OPERATORSRecientemente fue propuesto un sistema de tipos que combina tipos aplicativos, constantes, unión y recursivos, para capturar estáticamente la noción de Path Polymorphism. Esto se refiere a la capacidad de operar uniformemente sobre estructuras de datos aplicativas definidas de forma recursiva, utilizando una misma función. La esencia de esta característica se manifiesta en patrones de la forma x y, que permiten descomponer una estructura de datos arbitraria en las partes que la conforman. En el presente trabajo estudiamos el problema de type checking para este sistema, realizando esta labor en dos etapas. Primero introducimos un prototipo de implementación que abarca el proceso completo, incluyendo algoritmos para chequeo de equivalencia de tipos y subtipado basados en una caracterización conductual de estas relaciones. Se utilizó Haskell para este primer enfoque, para sacar provecho de la naturaleza funcional del problema. Una vez identificadas las limitaciones del prototipo, se propuso una implementación robusta y eficiente que reduce la complejidad de los pasos clave dentro del proceso, principalmente el chequeo de subtipado. Esta segunda implementación se desarrolló en Scala, utilizando una representación más conveniente para las expresiones de tipos basada en grafos cíclicos.A type system combining type application, constants as types, union types and recursive types has recently been proposed for statically typing Path Polymorphism, the ability to define functions that can operate uniformly over recursively specified applicative data structures. A typical pattern such functions resort to is x y which decomposes a compound, in other words any applicative tree structure, into its parts. We study type-checking for this type system in two stages. First we introduce a prototype implementation of the whole process that also involves algorithms for checking type equivalence and subtyping based on coinductive characterizations of those relations. We used Haskell for this first approach, to benefit from the functional nature of the problem. After identifying the limitations of the prototype, we propose an efficient and robust implementation that reduces complexity of the key part of the process, namely subtyping check. This was done on Scala using a more convenient representation for type expressions based on cyclic graphs.Fil: Edi, Juan Ignacio. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.Universidad de Buenos Aires. Facultad de Ciencias Exactas y NaturalesBonelli, Eduardo AugustoViso, Andrés Ezequiel2015info:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_7a1finfo:ar-repo/semantics/tesisDeGradoapplication/pdfhttps://hdl.handle.net/20.500.12110/seminario_nCOM000673_Edispainfo:eu-repo/semantics/openAccesshttps://creativecommons.org/licenses/by-nc-sa/2.5/arreponame:Biblioteca Digital (UBA-FCEN)instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesinstacron:UBA-FCEN2025-10-23T11:19:01Zseminario:seminario_nCOM000673_EdiInstitucionalhttps://digital.bl.fcen.uba.ar/Universidad públicaNo correspondehttps://digital.bl.fcen.uba.ar/cgi-bin/oaiserver.cgiana@bl.fcen.uba.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:18962025-10-23 11:19:02.051Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesfalse
dc.title.none.fl_str_mv Chequeo de tipos eficiente para Path Polymorphism
Efficient type checking for path polymorphism
title Chequeo de tipos eficiente para Path Polymorphism
spellingShingle Chequeo de tipos eficiente para Path Polymorphism
Edi, Juan Ignacio
CALCULOS DE PATRONES
CHEQUEO DE TIPOS
PATH POLYMORPHISM
TIPOS RECURSIVOS
OPERADORES ACI
PATTERN CALCULI
TYPE CHECKING
PATH POLYMORPHISM
RECURSIVE TYPES
ACI OPERATORS
title_short Chequeo de tipos eficiente para Path Polymorphism
title_full Chequeo de tipos eficiente para Path Polymorphism
title_fullStr Chequeo de tipos eficiente para Path Polymorphism
title_full_unstemmed Chequeo de tipos eficiente para Path Polymorphism
title_sort Chequeo de tipos eficiente para Path Polymorphism
dc.creator.none.fl_str_mv Edi, Juan Ignacio
author Edi, Juan Ignacio
author_facet Edi, Juan Ignacio
author_role author
dc.contributor.none.fl_str_mv Bonelli, Eduardo Augusto
Viso, Andrés Ezequiel
dc.subject.none.fl_str_mv CALCULOS DE PATRONES
CHEQUEO DE TIPOS
PATH POLYMORPHISM
TIPOS RECURSIVOS
OPERADORES ACI
PATTERN CALCULI
TYPE CHECKING
PATH POLYMORPHISM
RECURSIVE TYPES
ACI OPERATORS
topic CALCULOS DE PATRONES
CHEQUEO DE TIPOS
PATH POLYMORPHISM
TIPOS RECURSIVOS
OPERADORES ACI
PATTERN CALCULI
TYPE CHECKING
PATH POLYMORPHISM
RECURSIVE TYPES
ACI OPERATORS
dc.description.none.fl_txt_mv Recientemente fue propuesto un sistema de tipos que combina tipos aplicativos, constantes, unión y recursivos, para capturar estáticamente la noción de Path Polymorphism. Esto se refiere a la capacidad de operar uniformemente sobre estructuras de datos aplicativas definidas de forma recursiva, utilizando una misma función. La esencia de esta característica se manifiesta en patrones de la forma x y, que permiten descomponer una estructura de datos arbitraria en las partes que la conforman. En el presente trabajo estudiamos el problema de type checking para este sistema, realizando esta labor en dos etapas. Primero introducimos un prototipo de implementación que abarca el proceso completo, incluyendo algoritmos para chequeo de equivalencia de tipos y subtipado basados en una caracterización conductual de estas relaciones. Se utilizó Haskell para este primer enfoque, para sacar provecho de la naturaleza funcional del problema. Una vez identificadas las limitaciones del prototipo, se propuso una implementación robusta y eficiente que reduce la complejidad de los pasos clave dentro del proceso, principalmente el chequeo de subtipado. Esta segunda implementación se desarrolló en Scala, utilizando una representación más conveniente para las expresiones de tipos basada en grafos cíclicos.
A type system combining type application, constants as types, union types and recursive types has recently been proposed for statically typing Path Polymorphism, the ability to define functions that can operate uniformly over recursively specified applicative data structures. A typical pattern such functions resort to is x y which decomposes a compound, in other words any applicative tree structure, into its parts. We study type-checking for this type system in two stages. First we introduce a prototype implementation of the whole process that also involves algorithms for checking type equivalence and subtyping based on coinductive characterizations of those relations. We used Haskell for this first approach, to benefit from the functional nature of the problem. After identifying the limitations of the prototype, we propose an efficient and robust implementation that reduces complexity of the key part of the process, namely subtyping check. This was done on Scala using a more convenient representation for type expressions based on cyclic graphs.
Fil: Edi, Juan Ignacio. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
description Recientemente fue propuesto un sistema de tipos que combina tipos aplicativos, constantes, unión y recursivos, para capturar estáticamente la noción de Path Polymorphism. Esto se refiere a la capacidad de operar uniformemente sobre estructuras de datos aplicativas definidas de forma recursiva, utilizando una misma función. La esencia de esta característica se manifiesta en patrones de la forma x y, que permiten descomponer una estructura de datos arbitraria en las partes que la conforman. En el presente trabajo estudiamos el problema de type checking para este sistema, realizando esta labor en dos etapas. Primero introducimos un prototipo de implementación que abarca el proceso completo, incluyendo algoritmos para chequeo de equivalencia de tipos y subtipado basados en una caracterización conductual de estas relaciones. Se utilizó Haskell para este primer enfoque, para sacar provecho de la naturaleza funcional del problema. Una vez identificadas las limitaciones del prototipo, se propuso una implementación robusta y eficiente que reduce la complejidad de los pasos clave dentro del proceso, principalmente el chequeo de subtipado. Esta segunda implementación se desarrolló en Scala, utilizando una representación más conveniente para las expresiones de tipos basada en grafos cíclicos.
publishDate 2015
dc.date.none.fl_str_mv 2015
dc.type.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
info:eu-repo/semantics/publishedVersion
http://purl.org/coar/resource_type/c_7a1f
info:ar-repo/semantics/tesisDeGrado
format bachelorThesis
status_str publishedVersion
dc.identifier.none.fl_str_mv https://hdl.handle.net/20.500.12110/seminario_nCOM000673_Edi
url https://hdl.handle.net/20.500.12110/seminario_nCOM000673_Edi
dc.language.none.fl_str_mv spa
language spa
dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
eu_rights_str_mv openAccess
rights_invalid_str_mv https://creativecommons.org/licenses/by-nc-sa/2.5/ar
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
dc.source.none.fl_str_mv reponame:Biblioteca Digital (UBA-FCEN)
instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron:UBA-FCEN
reponame_str Biblioteca Digital (UBA-FCEN)
collection Biblioteca Digital (UBA-FCEN)
instname_str Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron_str UBA-FCEN
institution UBA-FCEN
repository.name.fl_str_mv Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
repository.mail.fl_str_mv ana@bl.fcen.uba.ar
_version_ 1846784893913137152
score 12.982451