Tópicos Avançados de Programação Funcional
Advanced Functional Programming
2021
First assignment
The first assignment is described
here: assignment1.html; more
documentation on
Gloss: aula11.pdf; aula12.pdf
Second assignment
The second assignment consists of studying and writing a report
and presentation on a topic related to functional programming.
The list of topics is here: assignment2.html
Each topic should be assigned to a single student (first come, first served)
Deadlines: will be defined soon.
Lectures
- Introduction: intro.html
- Review of Haskell: haskell.html
- Purely functional data
structures: datastructures.html
Examples: contar.hs; Dict.hs
- Amortization: amortization.html
- Understanding typeclasses:
typeclasses.html. Examples:
https://github.com/pbv/tapf-classes.git
- How to declare an imperative:
imperative.html;
What is a Monad?
Computerphile video
- Monads for functional programming:
monads.html.Examples: search.hs; https://github.com/pbv/tapf-monad-examples.git
- Monadic parsing: parsing.html;
Functional parsing video Computerphile
code: https://github.com/pbv/tapf-parsing
- Functors and applicatives:
applicative.html
- Property-based testing using QuickCheck: quickcheck.html
- QuickCheck example: Testing binary search trees.
video: How to specify it;
code: BST.hs; BSTTests.hs
- Case study: testing a simple JSON parser; code:
https://github.com/pbv/tapf-json
- Domain-specific embedded languages:
dsels.html;
code: https://github.com/pbv/tapf-shapes
- Case study: a DSEL for turtle graphics; code:
https://github.com/pbv/tapf-turtle
- Monad transformers: transformers.html;
code: https://github.com/pbv/tapf-monad-examples
Exams
Final exams (from previous editions): 2015;
2016;
2017.
Pedro Vasconcelos, 2018-2021.