Funções sobrecarregadas como objeto de primeira classe
Autor(a) principal: | |
---|---|
Data de Publicação: | 2010 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFMG |
Texto Completo: | http://hdl.handle.net/1843/SLSS-8BFHAY |
Resumo: | The use of polymorphic abstractions in programmming languages constitutes an important tool for code reuse and for program clarity and conciseness. The basis of most modern languages for the exploitation of polymorphism is Hindley-Milners type system, which has achieved such success due in great part to the relative simplicity of its type inference mechanism. This simplicity is obtained, however, by imposing somerestrictions. A major restriction is the (so-called) no polymorphic abstraction: function parameters must have a monomorphic type (in other words, parameters cannot be used with distinct types inside the functions body). There has been much work on extensions to overcome this restriction, involving so-called higher rank (also called rank-n) type systems, which allow arguments of polymorphic type. This work follows such vein, but is distinguished from all previous related work as follows.Intersection types are used to allow parameters to be used polymorphically inside a functions definition (the type of such polymorphic parameters must be explicitly annotated); this allows such function to receive arguments not only of polymorphic type may also of constrained polymorphic type (i.e. arguments involving the use of overloaded symbols). This promotes overloaded values to first-class. |
id |
UFMG_9aef11ecb17a4b699e24bea19cec5cfa |
---|---|
oai_identifier_str |
oai:repositorio.ufmg.br:1843/SLSS-8BFHAY |
network_acronym_str |
UFMG |
network_name_str |
Repositório Institucional da UFMG |
repository_id_str |
|
spelling |
Funções sobrecarregadas como objeto de primeira classecomputaçãoLinguagem de programaçãoLinguagem de programação (Computadores)ComputaçãoProgramação (Computadores)The use of polymorphic abstractions in programmming languages constitutes an important tool for code reuse and for program clarity and conciseness. The basis of most modern languages for the exploitation of polymorphism is Hindley-Milners type system, which has achieved such success due in great part to the relative simplicity of its type inference mechanism. This simplicity is obtained, however, by imposing somerestrictions. A major restriction is the (so-called) no polymorphic abstraction: function parameters must have a monomorphic type (in other words, parameters cannot be used with distinct types inside the functions body). There has been much work on extensions to overcome this restriction, involving so-called higher rank (also called rank-n) type systems, which allow arguments of polymorphic type. This work follows such vein, but is distinguished from all previous related work as follows.Intersection types are used to allow parameters to be used polymorphically inside a functions definition (the type of such polymorphic parameters must be explicitly annotated); this allows such function to receive arguments not only of polymorphic type may also of constrained polymorphic type (i.e. arguments involving the use of overloaded symbols). This promotes overloaded values to first-class.O uso de polimorfismo em linguagens de programação constitui um importante recurso para reuso de código e para clareza e concisão de programas. A base para implementação de polimorfismo em linguagens de programação modernas é o sistema de tipos de Hindley-Milner (HM) e uma extensão bastante útil desse sistema é a possibilidade de definição de símbolos sobrecarregados (com tipo polimórfico restrito). No sistema HM a inferência de tipos é relativamente simples, em razão de sua restrição de que parâmetros de funções devem ter tipo monomórfico. Esse requerimento pode entretanto ser um inconveniente em diversas aplicações. Este trabalho propõe uma extensão ao sistema de tipos de Hindley-Milner + sobrecarga, a qual possibilita a definição de funções com parâmetros de tipo polimórfico, mediante anotação explícita do tipo de tais funções pelo programador, sendo esses tipos especificados na forma de tipos interseção. No sistema proposto, funções com parâmetros polimórficos podem tanto ser aplicadas a argumentos de tipo polimórfico paramétrico (como em sistemas de polimorfismo de rank superior), como a argumentos de tipo polimórfico restrito, promovendo valores sobrecarregados a objetos de primeira classe .Universidade Federal de Minas GeraisUFMGCarlos Camarao de FigueiredoLucilia Camarão de FigueiredoAtze DjisktraMariza Andrade da Silva BigonhaElton Maximo Cardoso2019-08-09T15:18:22Z2019-08-09T15:18:22Z2010-11-19info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfapplication/pdfhttp://hdl.handle.net/1843/SLSS-8BFHAYinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMG2019-11-14T08:30:22Zoai:repositorio.ufmg.br:1843/SLSS-8BFHAYRepositório InstitucionalPUBhttps://repositorio.ufmg.br/oairepositorio@ufmg.bropendoar:2019-11-14T08:30:22Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false |
dc.title.none.fl_str_mv |
Funções sobrecarregadas como objeto de primeira classe |
title |
Funções sobrecarregadas como objeto de primeira classe |
spellingShingle |
Funções sobrecarregadas como objeto de primeira classe Elton Maximo Cardoso computação Linguagem de programação Linguagem de programação (Computadores) Computação Programação (Computadores) |
title_short |
Funções sobrecarregadas como objeto de primeira classe |
title_full |
Funções sobrecarregadas como objeto de primeira classe |
title_fullStr |
Funções sobrecarregadas como objeto de primeira classe |
title_full_unstemmed |
Funções sobrecarregadas como objeto de primeira classe |
title_sort |
Funções sobrecarregadas como objeto de primeira classe |
author |
Elton Maximo Cardoso |
author_facet |
Elton Maximo Cardoso |
author_role |
author |
dc.contributor.none.fl_str_mv |
Carlos Camarao de Figueiredo Lucilia Camarão de Figueiredo Atze Djisktra Mariza Andrade da Silva Bigonha |
dc.contributor.author.fl_str_mv |
Elton Maximo Cardoso |
dc.subject.por.fl_str_mv |
computação Linguagem de programação Linguagem de programação (Computadores) Computação Programação (Computadores) |
topic |
computação Linguagem de programação Linguagem de programação (Computadores) Computação Programação (Computadores) |
description |
The use of polymorphic abstractions in programmming languages constitutes an important tool for code reuse and for program clarity and conciseness. The basis of most modern languages for the exploitation of polymorphism is Hindley-Milners type system, which has achieved such success due in great part to the relative simplicity of its type inference mechanism. This simplicity is obtained, however, by imposing somerestrictions. A major restriction is the (so-called) no polymorphic abstraction: function parameters must have a monomorphic type (in other words, parameters cannot be used with distinct types inside the functions body). There has been much work on extensions to overcome this restriction, involving so-called higher rank (also called rank-n) type systems, which allow arguments of polymorphic type. This work follows such vein, but is distinguished from all previous related work as follows.Intersection types are used to allow parameters to be used polymorphically inside a functions definition (the type of such polymorphic parameters must be explicitly annotated); this allows such function to receive arguments not only of polymorphic type may also of constrained polymorphic type (i.e. arguments involving the use of overloaded symbols). This promotes overloaded values to first-class. |
publishDate |
2010 |
dc.date.none.fl_str_mv |
2010-11-19 2019-08-09T15:18:22Z 2019-08-09T15:18:22Z |
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 |
http://hdl.handle.net/1843/SLSS-8BFHAY |
url |
http://hdl.handle.net/1843/SLSS-8BFHAY |
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 application/pdf |
dc.publisher.none.fl_str_mv |
Universidade Federal de Minas Gerais UFMG |
publisher.none.fl_str_mv |
Universidade Federal de Minas Gerais UFMG |
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_ |
1816829720654774272 |