Programa Resumido

Nesta unidade curricular estuda-se o paradigma funcional de programação, tendo por base a linguagem de programação Haskell.

  • Programação funcional em Haskell.
    • Conceitos fundamentais: expressões, tipos, redução, funções e recursividade.
    • Conceitos avançados: funções de ordem superior, polimorfismo, tipos indutivos, classes, modularidade e monades.
  • Estruturas de dados e algoritmos.
  • Tipos abstractos de dados.


Programa Detalhado
  • Introdução ao paradigma funcional de programação
  • Conceitos fundamentais da programação em Haskell
  • Noção de programa e a sua execução. Expressões e valores. Redução. Tipos. Definições. Estruturas condicionais e concordância de padrões. Definições locais. Módulos.
  • Funções
  • Funções pré-definidas sobre tipos básicos. Funções não recursivas. Funções recursivas. Parâmetros de acumulação. Polimorfismo. Funções anónimas. Funções de ordem superior.
  • Listas
  • O conceito de lista. Listas por compreensão. Listas infinitas. Operações básicas sobre listas. As funções map e filter. As funções foldr e foldl. Outras funções de ordem superior. Funções para manipulação de texto. Algoritmos de ordenação: insertion sort, merge sort, quick sort.
  • Tipos, classes e polimorfismo
  • Definição de novos tipos de dados. Classes e instâncias. Classes derivadas. Hierarquia de classes. Algumas classes pré-definidas. Polimorfismo e sobrecarga. Classes de construtores.
  • Árvores
  • Árvores binárias. Árvores binárias de procura. Árvores generalizadas.
  • Monades
  • Noção de monade e sua definição. O monade IO. O monade Maybe. Outros monades.
  • Tipos Abstractos de Dados
  • O conceito de tipo abstracto de dados e a sua implementação em Haskell. Alguns exemplos: conjuntos, tabelas, pilhas e filas de espera.