Programação genérica usando o sistema CT

Detalhes bibliográficos
Ano de defesa: 2007
Autor(a) principal: Rodrigo Geraldo Ribeiro
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Minas Gerais
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://hdl.handle.net/1843/RVMR-7AAQD2
Resumo: The last decade has seen a number of approaches to datatype-generic programming: PolyP, Scrap Your Boilerplate, Derivable Type-Classes, Generic Haskell, Generics for the Masses, etc. The approaches vary in sophistication and target audience: some propose fullblown programming languages, others suggestlibraries. Most of these approaches uses a structural representation of the definition of an algebraic data type, with generic functions defined over this structural representation and automatically instantiated for data types defined in the program. In this case, instances of a generic function for different types are overloaded. SYB adopts a different approach, by defining a library of generic combinators for the traversal of values of complex data types. These generic functions can be used to define functions that operate on specific components of these complex types, avoiding the boilerplate code involved on the traversal of the structureof values of these types.This work presents a summary of the various approaches for generic programming in Haskell and compares the most relevant ones. Based on this analysis, we propose an approach for generic programming in a language similar to Haskell, but based on System CT. System CT extends the Damas-Milner type system with support for overloading, without the need for type class declarations, as inHaskell. As part of this work, a compiler for the language Haskell-CT has been implemented, by integrated system CT's front-end with the back-end of Haskell's compiler GHC. Two fundamental extensions to System CT are identified in order to provide support for generic programming: high order polymorphism and thedefinition of specialized poli rphic functions. This last extension is based on the ideia of overlapped definitions for a function.
id UFMG_d4b0671c0a090de871179e9cb5ca2693
oai_identifier_str oai:repositorio.ufmg.br:1843/RVMR-7AAQD2
network_acronym_str UFMG
network_name_str Repositório Institucional da UFMG
repository_id_str
spelling Programação genérica usando o sistema CTLinguagem de programação (Computadores)ComputaçãoProgramação (Computadores)sistema CTThe last decade has seen a number of approaches to datatype-generic programming: PolyP, Scrap Your Boilerplate, Derivable Type-Classes, Generic Haskell, Generics for the Masses, etc. The approaches vary in sophistication and target audience: some propose fullblown programming languages, others suggestlibraries. Most of these approaches uses a structural representation of the definition of an algebraic data type, with generic functions defined over this structural representation and automatically instantiated for data types defined in the program. In this case, instances of a generic function for different types are overloaded. SYB adopts a different approach, by defining a library of generic combinators for the traversal of values of complex data types. These generic functions can be used to define functions that operate on specific components of these complex types, avoiding the boilerplate code involved on the traversal of the structureof values of these types.This work presents a summary of the various approaches for generic programming in Haskell and compares the most relevant ones. Based on this analysis, we propose an approach for generic programming in a language similar to Haskell, but based on System CT. System CT extends the Damas-Milner type system with support for overloading, without the need for type class declarations, as inHaskell. As part of this work, a compiler for the language Haskell-CT has been implemented, by integrated system CT's front-end with the back-end of Haskell's compiler GHC. Two fundamental extensions to System CT are identified in order to provide support for generic programming: high order polymorphism and thedefinition of specialized poli rphic functions. This last extension is based on the ideia of overlapped definitions for a function.Universidade Federal de Minas Gerais2019-08-11T00:24:23Z2025-09-08T23:23:21Z2019-08-11T00:24:23Z2007-12-18info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://hdl.handle.net/1843/RVMR-7AAQD2Rodrigo Geraldo Ribeiroinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMG2025-09-09T18:43:20Zoai:repositorio.ufmg.br:1843/RVMR-7AAQD2Repositório InstitucionalPUBhttps://repositorio.ufmg.br/oairepositorio@ufmg.bropendoar:2025-09-09T18:43:20Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false
dc.title.none.fl_str_mv Programação genérica usando o sistema CT
title Programação genérica usando o sistema CT
spellingShingle Programação genérica usando o sistema CT
Rodrigo Geraldo Ribeiro
Linguagem de programação (Computadores)
Computação
Programação (Computadores)
sistema CT
title_short Programação genérica usando o sistema CT
title_full Programação genérica usando o sistema CT
title_fullStr Programação genérica usando o sistema CT
title_full_unstemmed Programação genérica usando o sistema CT
title_sort Programação genérica usando o sistema CT
author Rodrigo Geraldo Ribeiro
author_facet Rodrigo Geraldo Ribeiro
author_role author
dc.contributor.author.fl_str_mv Rodrigo Geraldo Ribeiro
dc.subject.por.fl_str_mv Linguagem de programação (Computadores)
Computação
Programação (Computadores)
sistema CT
topic Linguagem de programação (Computadores)
Computação
Programação (Computadores)
sistema CT
description The last decade has seen a number of approaches to datatype-generic programming: PolyP, Scrap Your Boilerplate, Derivable Type-Classes, Generic Haskell, Generics for the Masses, etc. The approaches vary in sophistication and target audience: some propose fullblown programming languages, others suggestlibraries. Most of these approaches uses a structural representation of the definition of an algebraic data type, with generic functions defined over this structural representation and automatically instantiated for data types defined in the program. In this case, instances of a generic function for different types are overloaded. SYB adopts a different approach, by defining a library of generic combinators for the traversal of values of complex data types. These generic functions can be used to define functions that operate on specific components of these complex types, avoiding the boilerplate code involved on the traversal of the structureof values of these types.This work presents a summary of the various approaches for generic programming in Haskell and compares the most relevant ones. Based on this analysis, we propose an approach for generic programming in a language similar to Haskell, but based on System CT. System CT extends the Damas-Milner type system with support for overloading, without the need for type class declarations, as inHaskell. As part of this work, a compiler for the language Haskell-CT has been implemented, by integrated system CT's front-end with the back-end of Haskell's compiler GHC. Two fundamental extensions to System CT are identified in order to provide support for generic programming: high order polymorphism and thedefinition of specialized poli rphic functions. This last extension is based on the ideia of overlapped definitions for a function.
publishDate 2007
dc.date.none.fl_str_mv 2007-12-18
2019-08-11T00:24:23Z
2019-08-11T00:24:23Z
2025-09-08T23:23:21Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://hdl.handle.net/1843/RVMR-7AAQD2
url https://hdl.handle.net/1843/RVMR-7AAQD2
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Federal de Minas Gerais
publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFMG
instname:Universidade Federal de Minas Gerais (UFMG)
instacron:UFMG
instname_str Universidade Federal de Minas Gerais (UFMG)
instacron_str UFMG
institution UFMG
reponame_str Repositório Institucional da UFMG
collection Repositório Institucional da UFMG
repository.name.fl_str_mv Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)
repository.mail.fl_str_mv repositorio@ufmg.br
_version_ 1856413913423282176