Programa resumido
- Motivação. Teoria e método em programação. Cálculo e raciocínio sobre programas. Composicionalidade. Combinadores de programas. Modularidade e reutilização. «Pacotes» de programação.
- Programação funcional: sua motivação e antecendentes históricos. Composição de funções. Noções de abstracção e de isomorfismo.
- Iniciação à estruturação de dados. Combinadores básicos e suas propriedades estruturais (reflexão, fusão, absorção, cancelamento e de functorialidade). Álgebra de um tipo de dados. Lei da troca.
- Introdução às estruturas de dados indutivas regulares. Álgebras de functores. A triologia «cata-ana-hilo». Recursividade polinomial. Caso de estudo: algoritmos de ordenação.
- Parametrização e polimorfismo. Inferência de tipos polimórficos. Programação genérica. Functores de tipo. Introdução ao politipismo.
- Programação funcional com efeitos. Mónades e sua teoria. Construção de programas monádicos. Exemplos: excepções, processamento de listas, computações com estado. Breve referência ao `input/output'.
Programa detalhado
A apresentar no final do semestre.
--
JoseNunoOliveira - 13 Feb 2012