Unidade 1 — Paradigmas e Haskell Básico (20h)¶
Identificação¶
| Unidade | 1 de 3 |
| Carga horária | 20 horas (10 aulas de 2h) |
| Pré-requisitos | Lógica de programação; experiência prévia com alguma linguagem imperativa |
| Linguagem | Haskell (GHC via GHCup, GHCi, Stack) |
Objetivos de aprendizagem¶
Ao final desta unidade, o estudante deverá ser capaz de:
- Diferenciar o paradigma funcional dos paradigmas imperativo e orientado a objetos, explicando conceitos como imutabilidade, transparência referencial e funções puras.
- Configurar o ambiente de desenvolvimento Haskell (GHCup, GHCi, Stack) e utilizar o REPL como ferramenta de exploração.
- Escrever funções puras usando casamento de padrões (pattern matching), guardas e expressões condicionais.
- Interpretar assinaturas de tipos e utilizar as classes de tipos básicas (
Eq,Ord,Show,Num). - Manipular listas com recursão, compreensão de listas e as funções de alta ordem
map,filterefold.
Cronograma¶
| Aula | CH | Conteúdo | Capítulo |
|---|---|---|---|
| 1 | 2h | Paradigmas de programação: imperativo × funcional; motivação e história | Introdução aos Paradigmas |
| 2 | 2h | Instalação do ambiente (GHCup, Stack) e primeiros passos no GHCi | Instalação do Ambiente |
| 3 | 2h | Fundamentos: expressões, definição de funções, precedência e aplicação | Fundamentos |
| 4 | 2h | Tipos básicos, tuplas, polimorfismo e classes de tipos | Tipos e Classes |
| 5 | 2h | Funções: pattern matching, guardas, where, let e lambdas |
Funções |
| 6 | 2h | Listas: construção, recursão sobre listas e compreensão de listas | Listas |
| 7 | 2h | Prática dirigida em laboratório: recursão e listas | Listas |
| 8 | 2h | Funções de alta ordem: map, filter, fold, composição e aplicação parcial |
Funções de Alta Ordem |
| 9 | 2h | Resolução comentada de exercícios e preparação para a avaliação | Exercícios Resolvidos |
| 10 | 2h | Revisão geral e avaliação escrita da unidade | — |
Metodologia¶
Aulas expositivas dialogadas intercaladas com codificação ao vivo no GHCi. As aulas 7 e 9 são integralmente práticas, realizadas em laboratório com acompanhamento individual. Recomenda-se que o estudante reproduza todos os exemplos do material no REPL antes de cada aula.
Avaliação¶
- Avaliação escrita individual (70%) — aula 10: questões conceituais sobre paradigmas e questões de codificação em Haskell básico (funções, listas, alta ordem).
- Listas de exercícios (30%) — entregas parciais ao longo da unidade, baseadas nos exercícios dos capítulos.
Bibliografia da unidade¶
- LIPOVAČA, Miran. Learn You a Haskell for Great Good! — capítulos 1 a 6.
- O'SULLIVAN, Bryan; STEWART, Don; GOERZEN, John. Real World Haskell — capítulos 1 a 4 (partes adaptadas ao longo dos capítulos desta unidade).
- HUTTON, Graham. Programming in Haskell. 2. ed. — capítulos 1 a 7 (leitura complementar).