Disciplina lecionada em conjunto com e Prof. Ricardo Rocha.
Definição de uma linguagem funcional mínima (Fun) como extensão do cálculo-lambda. Semântica operacional baseada em substituições e ambientes. Noção de "closure". A máquina SECD: arquitetura geral, instruções de máquina virtual e transições de estado. Extensões para estruturas de dados: pares, listas e records. Implementação de um compilador da linguagem Fun e compilador para SECD em Haskell e interpretador da máquina virtual em linguagem C.
Noção de semântica estrita e não-estrita. Redução call-by-value, call-by-name e call-by-need. Implementação de estratégia call-by-need usando redução de grafos. Tradução do cálculo-lambda em combinadores SKI e supercombinadores. Arquitetura da G-machine. Arquitetura da máquina STG.
Já estão disponíveis os temas para trabalhos deste módulo. Por favor comuniquem a vossa opção até ao 16 de maio.
Nota: por favor contactem-me se tiverem dificuldade de acesso a alguma da bibliografia recomendada.