Programming Languages

Functional Pearls (Seminar)

“Just as natural pearls grow from grains of sand that have irritated oysters, these programming pearls have grown from real problems that have irritated programmers. The programs are fun, and they teach important programming techniques and fundamental design principles.”

Functional pearls are short articles which present a functional programming technique in a self-contained way. Typical functional pearls consist of:

  • an instructive example of program calculation or proof, or
  • a nifty presentation of an old or new data structure, or
  • an interesting application or programming technique.

Functional pearls are published in the Journal of Functional Programming (JFP), and at various conferences like ICFP, POPL, PLDI, OOPSLA, etc. They vary in difficulty, might be general techniques or specific to one programming language, focus on correctness or efficiency and so on. I will shortly upload a selection of pearls which are appropriate for the seminar. Students can also propose other functional pearls, under the condition that they have to be peer-reviewed and published at a conference or academic journal.

  • Entry in the Alma system: Alma


There will be one meeting at the beginning of the semester when we will distribute topics among the participants. A first meeting has been announced to everyone who has enrolled in the seminar by mail. There will be 3 to 4 meetings at the end of the semester where you have to present your topic.

Functional Pearls

There is a long list of functional pearls available at: Link. I will upload a list of appropriate topics in due time.

First Meeting



To participate in this course, send an email containing your name, Matrikelnummer and Studiengang to David Binder.



Basic knowledge in functional programming, esp. programming with higher-order functions is required. Most of the topcis might require the participant to read and understand source code in Haskell, Lisp/Scheme or OCaml/SML; this depends, of course, on the paper you choose.