Programação Funcional e em Lógica

Expressões e tipos em Haskell, relações e procura em Prolog, com exemplos trabalhados e prática.

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

PFL usa Haskell para transformar valores com funções e Prolog para descrever relações e procurar soluções. Em Haskell, acompanha as substituições e as restrições de tipo; em Prolog, segue as ligações de variáveis e os pontos de retrocesso.

O percurso

Em Haskell, começa pelas expressões e padrões, depois aprende a deduzir tipos. Listas e recursão cobre compreensões, ordenação, intercalação, inserção em posições, permutações e bits das fichas iniciais. Ordem superior reúne composição, folds e preguiça. Passa depois às árvores e tipos algébricos, às ações I/O e parsers e às propriedades com QuickCheck.

Em Prolog, começa por termos, unificação e SLD. Estuda listas, aritmética e corte antes de recolher soluções e compor estruturas. A última página aplica essas ferramentas a procura, jogos e manipulação simbólica.

Cada lição termina com questões que testam decisões diferentes. Resolve-as sem abrir as pistas; depois compara a justificação, e não apenas a resposta. A cheat sheet serve para rever condições e padrões depois de estudar as explicações.

Como resolver uma questão

Num tipo, atribui letras aos valores desconhecidos e impõe as igualdades pedidas pelas aplicações. Numa recursão, escreve um caso pequeno, o caso base e a medida que diminui. Num fold, expande as aplicações antes de fazer contas. Numa consulta Prolog, renomeia as variáveis de cada cláusula, escolhe o objetivo mais à esquerda e assinala os pontos de retrocesso.

Testa também entradas vazias, resultados já instanciados e casos que violam uma pré-condição. Um programa que funciona num só exemplo pode continuar parcial, perder repetidos ou entrar num ramo infinito. Nas transformações de árvores, conserva os construtores e os casos de ausência; em consultas sobre «todos», verifica também os ids que não existem na base.

Os exemplos Haskell e Prolog têm programas completos no editor. O motor Prolog do site é SWI; a ficha da cadeira indica SICStus. A sintaxe base é comum, mas os predicados de biblioteca e de escrita diferem entre motores. As páginas assinalam onde o comportamento foi confirmado apenas em SWI.

Avaliação de 2026/27

A apresentação de 2026 divide a cadeira em dois módulos de seis semanas. Em época normal, a média dos dois testes tem peso de 90% e a média dos dois trabalhos individuais tem peso de 10%. Em recurso, o exame pode substituir um ou ambos os testes, conservando a componente prática. A apresentação exige pelo menos 75% das aulas TP e indica exceções para trabalhadores-estudantes e repetentes que cumpriram a frequência no ano anterior. Consulta as regras e os prazos atuais.

Os dez PDFs funcionais disponíveis foram novamente conferidos em outubro de 2026. As folhas 1 e 2 têm data de 17 de setembro e a folha 3 de 23 de setembro de 2026; as aulas 1 a 6 têm carimbo de 2026. As fichas posteriores, os materiais Prolog de 2026/27 e as provas atuais continuam por confirmar. O restante percurso usa referências históricas e técnicas; os projetos têm requisitos próprios no Moodle.

Referências complementares

Os materiais da edição atual do Moodle definem o percurso da cadeira. Estas referências ajudam a consultar definições e detalhes das ferramentas. Confirma a versão quando segues documentação de software.

Vídeos para acompanhar o estudo

Para acompanhar o estudo com vídeo, vê a secção Escolher a função de ordem superior e a secção Recursão que termina.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.