Implementação duma Linguagem Funcional
usando Combinadores Compactos
Pedro Baltazar Vasconcelos
Mestrado em Ciência de Computadores
Departamento em Ciência de Computadores
Faculdade de Ciências da Universidade do Porto
Outubro 1998
Resumo
A implementação de linguagens funcionais com semântica não-estrita
(i.e., "lazy-evaluation") pode ser efectuada de forma eficiente
usando redução de grafos de combinadores.
Nesta dissertação apresentamos uma implementação duma
linguagem funcional minimal com semântica não-estrita
usando uma nova tradução para uma família de combinadores
designados-Cl(K).
Esta tradução apresenta algumas vantagens em relação à
tradução clássica para combinadores-SK,
nomeadamente reduzindo o número de combinadores introduzidos e
tornando a redução em combinadores compactos particularmente eficiente.
É também conceptualmente mais simples do que a tradução
em super-combinadores e preserva propriedades do programa
original, nomeadamente o número de reduções-beta.
Tomando partido desta tradução em combinadores
apresentamos um esquema de compilação
dum programa funcional que gera
código em linguagem C para redução de grafos.
Este esquema foi implementado num protótipo de compilador escrito
em Prolog.