Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/14888

TítuloAlgebraic specialization of generic functions for recursive types
Autor(es)Cunha, Alcino
Pacheco, Hugo
Palavras-chaveGeneric programming
Recursion patterns
Rewrite systems
Specialization
Type families
Data8-Mar-2011
EditoraElsevier 1
RevistaElectronic Notes in Theoretical Computer Science
Resumo(s)Defining functions over large, possibly recursive, data structures usually involves a lot of boilerplate. This code simply traverses non-interesting parts of the data, and rapidly becomes a maintainability problem. Many generic programming libraries have been proposed to address this issue. Most of them allow the user to specify the behavior just for the interesting bits of the structure, and provide traversal combinators to “scrap the boilerplate”. The expressive power of these libraries usually comes at the cost of efficiency, since runtime checks are used to detect where to apply the type-specific behavior. In previous work we have developed an effective rewrite system for specialization and optimization of generic programs. In this paper we extend it to also cover recursive data types. The key idea is to specialize traversal combinators using well-known recursion patterns, such as folds or paramorphisms. These are ruled by a rich set of algebraic laws that enable aggressive optimizations. We present a type-safe encoding of this rewrite system in Haskell, based on recent language extensions such as type-indexed type families.
TipoArtigo
URIhttps://hdl.handle.net/1822/14888
DOI10.1016/j.entcs.2011.02.016
ISSN1571-0661
Versão da editorahttp://dx.doi.org/10.1016/j.entcs.2011.02.016
Arbitragem científicayes
AcessoAcesso aberto
Aparece nas coleções:HASLab - Artigos em atas de conferências internacionais (texto completo)
DI/CCTC - Artigos (papers)

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
msfp08.pdf522,2 kBAdobe PDFVer/Abrir

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID