Programming Languages

Relational Programming with miniKanren

Relational programming is a declarative programming paradigm which is related to logic programming. A relational programm consists of two parts: The first part declares a knowledge database consisting of relations. The second part queries the knowledge database. The miniKanren language is a minimal relational programming language used for teaching. Following the “The Reasoned Schemer” book (second edition), we will learn about relational programming by implementing a version of miniKanren ourselves.

Basic knowledge of a lisp-like language (Racket, BSL, Lisp, Scheme, Clojure,…) is presumed. The seminar is open to motivated BSc students.


David Binder
David Binder
(Office: Room B211)
Prof. Klaus Ostermann
Klaus Ostermann


  • Vorlesungsverzeichnis: Link

Struktur der Veranstaltung

The seminar will take place online via BigBlueButton and/or Zoom. In order to receive the zoom link you have to register with David Binder. Send a short email with your name, matrikelnummer, field (Informatik/Bio-Informatik/…) and pursued degree (Bsc/Msc).

In order to encourage a lively discussion each participant will be asked to read the current chapter of the book. Additionally, you have to hand in a short list of questions or problems you would like to have discussed during the weekly session. Details will be discussed during the first meeting.

miniKanren Code

In order to start running miniKanren examples in DrRacket put the following implementation file into a directory:

Create a file myFile.rkt in the same directory and start with the following incantation:

#lang racket
(require "implementation.rkt")


  • Thursday, 5.11.2020 18:15 via BigBlueButton (First meeting)
  • All further meetings will be announced in the forum.