Métodos de Programação I - 2001/02 | |
---|---|
[ DI/UM ] |
Equipa docente |
Ref | Dia | Hora | Tipo | Sala | Cursos | Docente |
---|---|---|---|---|---|---|
1 | 2.ª-feira | 18h00-20h00 | TP(1) | CP2-307 | LESI | J.B. Barros |
2 | 3.ª-feira | 08h00-10h00 | TP(2) | CP3-404 | LESI | M.J. Frade |
3 | 3.ª-feira | 10h00-12h00 | TP(3) | CP3-403 | LESI | M.J. Frade |
4 | 3.ª-feira | 16h00-17h00 | T | CP1-A3 | LESI+LMCC | J.N. Oliveira |
5 | 5.ª-feira | 11h00-12h00 | T | 2.A102 | LMCC+LESI | J.N. Oliveira |
6 | 5.ª-feira | 16h00-18h00 | TP(1) | CP1-104 | LMCC | J.S. Pinto |
7 | 5.ª-feira | 18h00-20h00 | TP(4) | CP2-304 | LESI | J.S. Pinto |
8 | 5.ª-feira | 18h00-20h00 | TP(2) | CP1-104 | LMCC | J.B. Barros |
Dia | Hora | Cursos | Docente |
---|---|---|---|
2.ª-feira | 10h00-12h00 | LMCC+LESI | J.B. Barros |
3.ª-feira | 09h00-12h00 | LMCC+LESI | J.B. Barros |
3.ª-feira | 16h00-18h00 | LESI | M.J. Frade |
3.ª-feira | 17h00-18h00 | LESI+LMCC | J.N. Oliveira |
5.ª-feira | 11h00-13h00 | LESI+LMCC | J.S. Pinto |
A composição f ·g como combinador elementar de funções. Associatividade da composição. Função identidade id. Estudo dos combinadores elementares de programas funcionais (cont.): Polimorfismo da função identidade. A propriedade f ·id = id ·f = f e seu diagramas comutativo. Notação funcional com ou sem variáveis.
O combinador <f,g> e o produto A * B (analogia com «struct» em C) e suas projecções. Propriedade de cancelamento- * . O combinador [f,g] e o coproduto A + B (analogia com «union» em C) e suas injecções. Propriedades universais de <f,g> e de [f,g] e suas derivadas (cancelamento, reflexão e fusão). Os combinadores f * g e f + g . Propriedades de absorção. Propriedades functoriais.
Apresentação da extensão Mpi.hs ao Prelude.hs do Hugs 98.
Lei da troca. Diagrama da lei da troca. Exemplo: undistr.
Predicados e guardas. Condicional de McCarthy. Lei da fusão do condicional de McCarthy.
Tipos elementares genéricos: 0 , 1 e 2 (resp. Void, () e Bool em HASKELL). Segmentos iniciais e tipos enumerados.
Funções constantes. O combinador c . Propriedades. Polimorfismo da função constante: c = c ·f.
Funções de ordem superior. Noção de espaço funcional. O combinador curry f e o operador ap. A exponencial B^A e seus isomorfismos (eg. curry, split, either etc). As funções ! : A ->1 e ? : 0 ->A .
Propriedade universal de curry f e cancelamento da exponencial.
As propriedades de fusão e reflexão da exponencial como consequência da propriedade universal de curry f . A construção f^A e a propriedade de absorção.
Produtos e coprodutos n -ários ( n>=0 ).
O conceito de «apontador» 1 + A (Maybe a em HASKELL). Tipos de dados recursivos vistos como equações. As listas ligadas e a equação L =1 + A * L .
Declaração de tipos de dados em HASKELL. Sua relação com o coproduto. Álgebra e co-álgebra do tipo indutivo definido pela equação L =1 + A * L . Isomorfismo. Introdução à observação de tipos indutivos usando como exemplo listas de inteiros: data L = Nil | Cons (Int,L) .
Conceitos de catamorfismo e anamorfismo usando o tipo de dados exemplo listas de inteiros: data L = Nil | Cons (Int,L) . Conceito de hilomorfismo usando o tipo de dados exemplo listas de inteiros - data L = Nil | Cons (Int,L) . O factorial visto como um hilomorfismo. Cálculo de programas: eliminação da estrutura de dados intermédia de um hilomorfismo.
Apresentação do módulo RList.hs: o algoritmo de ordenação por inserção simples como hilomorfismo sobre a estrutura RList a.
Introdução ao tipo de dados árvores binárias simples, ou listas bi-lineares: data BTree a = Empty | Node(a, (BTree a, BTree a)). Apresentação do módulo BTree.hs. Estudo da triologia cata-ana-hilo associada ao tipo BTree. Exemplo: o hilomorfismo qSort (`quick sort').
Formulação de map (em [a]) e de fmap em RList como catamorfismos. Propriedades:
Noção de functor. Propriedades functoriais. Functores em HASKELL: a class Functor e o operador fmap. Exemplos: functor indentidade, functor constante e a exponencial. Propriedades naturais.
Noção de bi-functor. Propriedades. Bi-functores em HASKELL: a class BiFunctor e o operador bmap. Exemplos: functor produto e coproduto.
Definição genérica de um tipo indutivo de dados. Parametrização. Noção de functor de base. maps são catamorfismos: Politipismo da definição t a =b(a,t a) de um tipo indutivo genérico paramétrico. Noção de functor de tipo e sua formulação genérica como o catamorfismo t f =cata (in ·b(f,id)).
Polimorfismo versus politipismo. Programação dita «genérica». Propriedade universal de um catamorfismo cata (f) do tipo genérico t a =b(a,t a) e suas derivadas: cancelamento-cata. Derivação das leis genéricas de reflexão-cata e de fusão-cata. Exemplos de aplicação. Derivação da lei genérica de absorção-cata.
Noção de functor polinomial. Forma canónica de um functor polinomial. Lei do binómio de Newton. Noção de tipo de dados indutivo polinomial. t a1...an =b(a1,...,an,ta1...an) . Generalização da triologia cata-ana-hilo à indução polinomial.
Triologia cata-ana-hilo associada ao tipo BTree - exemplos célebres: os catamorfismos de travessia (in/pre/pós-ordem). Triologia cata-ana-hilo associada ao tipo LTree - exemplos: os hilomorfismos dfac (duplo factorial) e fib (série de Fibonacci). O hilomorfismo mSort (`merge sort').
Motivação e definição formal. Operadores de composição, multiplicação e aplicação monádica (`bind'). Extensão monádica de uma função. Propriedades. Mónadas em HASKELL: a class Monad e os operadores return, (»=), » e fail. Exemplos de mónadas: excepções, listas e funcionalidade de entrada/saída.
|
Época | Chamada | Data | Hora | Salas | Inscritos | Prova |
---|---|---|---|---|---|---|
Normal | 1.ª | 5.ª-feira, 17 de Janeiro 2002 | 09h30 | 2201 a 2210 | 162 + 48 | |
Normal | 2.ª | 3.ª-feira, 5 de Fevereiro 2002 | 14h30 | 2201 a 2207 | 142 + 50 | |
Recurso | - | 2.ª-feira, 16 de Setembro 2002 | 14h30 | 2201 a 2204 | 156 + 57 | |
- | 2.ª-feira, 18 de Novembro 2002 | 17h00 | 2306 | 20+3 |