Functional Programming voor Al


Functional programming is a programming discipline that is based on the mathematical notion of a “function”. By using (higher order) “pure” functions, algebraic data types and a strong and flexible typing system results in a highly expressive programming language in which one can define computations in a concise and clear way. The underlying fundamental mathematical computation model is well known and investigated (lambda-calculus, term-rewriting) and enables one to reason about programs using relatively simple mathematical techniques such as substitution and induction.

Functional languages play a prominent role in computer science research when investigating new (programming language) concepts. They are also important in the domain of artificial intelligence. Because of their high level of expressive power, they are increasingly used to develop complex software systems.


After following this course, you can:

  • Solve problems in a functional way
  • Choose and develop suitable data structures for given problems
  • Use and deploy modern programming language concepts such as higher-order functions, polymorphism, overloading, recursive data structures
  • Reason about functional programs.


expressions; functions; type systems; polymorphism; recursion; rewriting; basic types; algebraic data types; overloading; tuples; records; lists; list comprehensions; ZF-expressions; lambda abstraction; higher order functions; evaluation strategies; recursive data structures; correctness proofs.

Teaching methods

The lectures present the theoretical background of new topics. In the assignments, the student actively engages in solving problems using functional programming. In a seminar assignments are discussed. We use the state-of-the-art functional programming language Clean.

It is obligatory to participate in the assignments. Feedback on part of these assignments is provided by students. This is not by means of a result value.


Programming experience at the level of the computer science courses Imperatief Programmeren 1 and 2. In particular it is assumed that you know how to program systematically, use functions and recursion.


This course also has an
description in Dutch.

Course ID
3 ec
third quarter
Show schedule
SWS / PersoonlijkRooster


Included in