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.