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