Graduate level course at UFMG
- Functional programming
- data definitions
- lists, tuples, functional types
- function definitions
- higher-order functions
- typing, overloading, type classes, type inference
- abstract data types and modules
- lazy evaluation
- functors, applicative functors, monads, I/O, actions, side effects
- proofs of program properties, dependent types, correspondence
between types and propositions, proofs and programs
Classes will cover concepts and exercises will be solved and
proposed to illustrate the concepts introduced, using the
programming language Haskell (and variations of Haskell supported by
ghc, the prevailing Haskell compiler, and its brother interpreter
A short introduction to Agda will be given, for introducing proofs
of program properties using dependent types.
Programação em Haskell , Carlos
Camarão, Lucília Figueiredo, Rodrigo Ribeiro,
Cristiano Vasconcellos, 2017 (under construction).
- Thinking Functionally with Haskell, Richard Bird,
Cambridge University Press, 2015.
- Simon Thompson, The Craft of Functional Programming, 3rd edition, Addison-Wesley, 2011.
- Koen Claessen's course lecture notes and exercises
- Miran Lipovaca, Learn You a Haskell for Great Good: a Beginner's Guide ,
No Starch Press, 2011.
- Richard Bird, Introduction to Functional Programming using Haskell, 2nd edition, Prentice Hall 1998.
- Real World Haskell, Bryan O'Sullivan, Don Stewart, John Goerzen, O'Reilly, 2009.
- Paul Hudak, The Haskell School of Expression: Learning Functional Programming through Multimedia, Cambridge Univ. Press, 2000.
- Participation: 15
- 1 Project: 10
- 1 Exam: 25
- Exercises: 50
Course support material:
Download the Haskell Platform, which comes with the compiler (ghc) and interpreter (ghci) used in the course.