Aula 22 (T)
Exemplo de implementação do conceito de ordem parcial através da definição de uma nova classe. Definição do tipo conjunto como instância desta classe.
Records em Haskell. Exemplos de utilização.
Aula 21 (T)
O tipo abstracto Queue, e sua implementação em Haskell.
Exemplos com de utilização dos tipos abstractos Stack e Queue.
Os tipos abstractos Set e Table. Exemplos de diferentes implementações para estes tipos, e de sua utilização.
Aula 20 (T)
Inquéritos para avaliação do ensino ministrado.
Tipos concretos de dados versos tipos abstractos de dados.
Implementação de tipos abstractos de dados em Haskell usando módulos.
O tipo abstracto Stack: exemplos de diferentes implementações deste tipo, e da sua utilização.
Aula 19 (T)
Módulos: os diferentes formas de exportação e importação de entidades; exemplos.
Compilação de programas Haskell.
Aula 18 (T)
Funções de input/output do Prelude e do módulo IO.
Manipulação de ficheiros de texto. Exemplos de como carregar/guardar a informação de/para ficheiro. Vários exemplos.
O construtor de tipos Maybe como instância da classe Monad. Exemplo de utilização.
Aula 17 (T)
Definição de uma classe para o constructor de tipos função finita e exemplo de uma instância desta classe.
Introdução ao conceito de mónade e apresentação da classe Monad.
O mónade IO; a notação do; funções IO do Prelude. Vários exemplos de funções com acções de input/output.
Aula 16 (T)
A classe Read e exemplos da sua utilização. Declaração de tipos polimórficos com restrições nos parâmetros.
A hierarquia de classes pré-definidas do Haskell. Definição de novas classes e exemplos da sua utilização.
Classes de constructores de tipos. A classe Functor e exemplos de instâncias desta classe.
Aula 15 (T)
Extensão de classes. Os conceitos de herança e herança múltipla.
Apresentação de algumas classes pré-definidas do Haskell: Ord, Show, Num e Enum. Declaração do tipo Nat como
instância de cada uma destas classes.
Aula 14 (T)
Polimorfismo paramétrico e polimorfismo ad hoc (sobrecarga de operadores).
Tipos qualificados. Os conceitos de classe e de instância de classe.
O conceito de tipo principal. Exemplos de classes. Definições por omissão de métodos.
A classe Eq: exemplos de instâncias, instâncias com restrições e instâncias derivadas.
Aula 14 (T)
Árvores binárias de procura. Funções de inserção e pesquisa em árvores binárias de procura.
Definição e análise de duas definições distintas da função de transformação uma lista numa árvore: usando recursividade primitiva, e utilizando um parâmetro de acumulação.
Aula 13 (T)
O tipo de dados árvore binária. Diversas funções recursivas sobre árvores binárias.
Travessias de árvores binárias: preorder, inorder e postorder.
Aula 12 (T)
Tipos algébricos: exemplos tipos recursivos e polimórficos.
Definição do tipo dos números naturais e de funções que manipulam este tipo de dados. Análise de casos (expressões case).
O tipo (Maybe a) e exemplos da sua utilização.
Aula 11 (T)
Definição de novos tipos de dados. Tipos algébricos: exemplos de tipos enumerados e de co-produtos.
Aula 10 (T)
Funções de ordem superior: a função foldr e a composição de funções.
Algoritmos de ordenação de listas: insertion sort, quick sort e merge sort. Diversas implementações em Haskell destes algoritmos.
Aula 9 (T)
Definição em Haskell de listas por compreensão.
Funções anónimas.
Várias implementações de uma função que calcula os divisores de um número.
Aula 8 (T)
Funções de ordem superior. As funções map e filter.
A notação @.
Aula 7 (T)
Padrões sobre números naturais.
Definição e análise de diferentes versões das funções take e drop.
Aula 6 (T)
Dispensa de aulas.
Aula 5 (T)
Redução: lazy evaluation versus eager evaluation.
Definições multi-clausais de funções. Funções totais e funções parciais.
Tipos sinónimos. Definições locais. Operadores infixos.
Funções com guardas.
Aula 4 (T)
Definição de funções e a sua invocação: curried versus uncurried.
O tipo polimórfico [a] e o tipo String. Algumas funções pré-definidas sobre estes tipos. Noção de padrão e concordância de padrões. Equações como
regras de redução.
Aula 2 (T)
Conceitos fundamentais da programação em Haskell: valores e expressões; tipos básicos e tipos compostos.
Definições de funções simples. Equações como regras de cálculo. Preservação de tipos.
Inferência de tipos: noção de variável de tipo; funções polimórficas.
Aula 1 (T)
Apresentação. O paradigma funcional de programação.