Teóricas
Aula 22 (T)
21/12/2006
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.
Records em Haskell. Exemplos de utilização.
Aula 21 (T)
18/12/2006
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.
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)
14/12/2006
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.
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)
11/12/2006
Módulos: os diferentes formas de exportação e
importação de entidades; exemplos.
Compilação de programas Haskell.
Compilação de programas Haskell.
Aula 18 (T)
07/12/2006
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.
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)
04/12/2006
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.
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)
30/11/2006
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.
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)
27/11/2006
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.
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)
23/11/2006
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.
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)
20/11/2006
Á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.
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)
16/11/2006
O tipo de dados árvore binária. Diversas funções
recursivas sobre árvores binárias.
Travessias de árvores binárias: preorder, inorder e postorder.
Travessias de árvores binárias: preorder, inorder e postorder.
Aula 12 (T)
13/11/2006
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.
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)
09/11/2006
Definição de novos tipos de dados. Tipos algébricos:
exemplos de tipos enumerados e de co-produtos.
Aula 10 (T)
06/11/2006
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.
Algoritmos de ordenação de listas: insertion sort, quick sort e merge sort. Diversas implementações em Haskell destes algoritmos.
Aula 9 (T)
02/11/2006
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.
Funções anónimas.
Várias implementações de uma função que calcula os divisores de um número.
Aula 8 (T)
30/10/2006
Funções de ordem superior. As funções map e filter.
A notação @.
A notação @.
Aula 7 (T)
26/10/2006
Padrões sobre números naturais.
Definição e análise de diferentes versões das funções take e drop.
Definição e análise de diferentes versões das funções take e drop.
Aula 6 (T)
19/10/2006
Dispensa de aulas.
Aula 5 (T)
16/10/2006
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.
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)
12/10/2006
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.
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)
02/10/2006
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.
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)
28/09/2006
Apresentação. O paradigma funcional de programação.