Inferência de tipos com suporte para sobrecarga baseada no sistema CT
Ano de defesa: | 2004 |
---|---|
Autor(a) principal: | |
Orientador(a): | |
Banca de defesa: | |
Tipo de documento: | Tese |
Tipo de acesso: | Acesso aberto |
Idioma: | por |
Instituição de defesa: |
Universidade Federal de Minas Gerais
UFMG |
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: | http://hdl.handle.net/1843/RVMR-65VJKR |
Resumo: | Este trabalho aborda o problema da inferência de tipos com definições sobrecarregadas, apresentando uma revisão do sistema de tipos CT. Esse sistema é uma extensão do sistema proposto por Damas-Milner com suporte para sobrecarga de nomes, onde restrições de tipo são usadas em tipos polimórficos para indicar restrições de instanciação desses tipos, de acordo com definições sobrecarregadas existentes. a inferência de tipos nesse sistema envolve a resolução para o problema da satisfazibilidade de restrições, que trata de decidir se um dado conjunto de restrições de um tipo polimórfico é válido ou não, em um determinado contexto de tipos. Políticas para resolução de sobrecarga muito restritirvas têm sido adotadas para garantir a deibilidade deste problemas. O sistema CT adota uma política de resolução de sobrecarga muito menos restritiva que as presentes em sistemas de tipos similares. As principais contribuições desse trabalho são: uma definição formal do problema de satisfazibilidade de restrições independente das regras de derivação do sistema de tipos, apresentação de um algoritmo para a solução desse problema e a implementação de um protótipo que demonstra que a adoção de uma política de sobrecarga menos restritiva pode funcionar bem na prática. Nos testes realizados com a implementação desse algoritmo, usando código similar a programas implemtnados em Haskell, não foi encotnrada nenhuma situação em que a satisfazibilidade das restrições não pode ser decidida. Para estes casos é utilizado um limite de iteração para interromper o processo e rejeitar a expressão, indicando a ocorrência de um erro de tipo. |