Repositório de estudos da disciplina de Introdução à Programação Funcional, ministrada pelo Prof. Sérgio Costa (2025.2). Este projeto documenta meu aprendizado através de anotações, atividades práticas e mini-projetos nas linguagens Haskell, Clojure, Scala e Elixir.
- Compreender os conceitos fundamentais do Paradigma Funcional (FP).
- Desenvolver projetos em diferentes linguagens funcionais:
- Pura: Haskell
- Lisp Dialect (Dinâmica): Clojure
- Multiparadigma (Híbrida): Scala e Elixir
- Avaliar e comparar as abordagens de cada linguagem para resolver problemas.
| Unidade | Linguagem Principal | Ferramenta de Build | Paradigma |
|---|---|---|---|
| 1 | Haskell | cabal |
Funcional Puro |
| 2 | Clojure | leiningen / clj |
Dinâmico, Funcional (Lisp) |
| 3 | Scala | sbt |
Híbrido (OO + Funcional) |
| 3 | Elixir | mix |
Funcional, Concorrente |
O repositório é organizado em diretórios correspondentes a cada unidade da disciplina:
- /Unidade-01-Haskell: Cobre os fundamentos da programação funcional pura com Haskell, culminando em um projeto de parser JSON.
- /Unidade-02-Clojure: Explora o dialeto Lisp Clojure, com foco em metaprogramação, interoperabilidade com Java e um projeto de transformação de texto.
- /Unidade-03-Scala-Elixir: Investiga o mundo multiparadigma, comparando a abordagem híbrida de Scala (JVM) com o foco em concorrência de Elixir (BEAM).
Cada pasta de unidade contém subdiretórios para aulas, atividades e o mini-projeto correspondente.
Este repositório é baseado nos seguintes materiais:
- Learn You a Haskell for Great Good! – Miran Lipovača
- Programming Clojure – Alex Miller
- Programming Scala – Dean Wampler
- Programming Elixir – Dave Thomas