Programming Languages

Relational Programming with miniKanren

Re­la­tio­nal pro­gramming is a de­cla­ra­ti­ve pro­gramming pa­ra­digm which is re­la­ted to logic pro­gramming. A re­la­tio­nal pro­gramm con­sists of two parts: The first part de­cla­res a know­ledge da­ta­ba­se con­sis­ting of re­la­ti­ons. The se­cond part que­ries the know­ledge da­ta­ba­se. The mi­ni­K­an­ren lan­gua­ge is a mi­ni­mal re­la­tio­nal pro­gramming lan­gua­ge used for teaching. Fol­lo­wing the “The Re­a­so­ned Sche­mer” book (se­cond edi­ti­on), we will learn about re­la­tio­nal pro­gramming by im­ple­men­ting a ver­si­on of mi­ni­K­an­ren our­sel­ves.

Basic know­ledge of a lisp-li­ke lan­gua­ge (Ra­cket, BSL, Lisp, Sche­me, Clo­ju­re,…) is pre­su­med. The se­mi­nar is open to mo­ti­va­ted BSc stu­dents.

Do­zen­ten

David Bin­der
Re­se­ar­cher
David Bin­der
(Of­fice: Room B211)
Prof. Klaus Os­ter­mann
Head
Klaus Os­ter­mann

Alma

  • Vor­le­sungs­ver­zeich­nis: Link

Struk­tur der Ver­an­stal­tung

The se­mi­nar will take place on­line via Big­Blu­e­But­ton and/or Zoom. In order to re­cei­ve the zoom link you have to re­gis­ter with David Bin­der. Send a short email with your name, ma­tri­kel­num­mer, field (In­for­ma­tik/Bio-In­for­ma­tik/…) and pur­sued de­gree (Bsc/Msc).

In order to en­cou­ra­ge a li­vely dis­cus­sion each par­ti­ci­pant will be asked to read the cur­rent chap­ter of the book. Ad­di­tio­nal­ly, you have to hand in a short list of ques­ti­ons or pro­blems you would like to have dis­cus­sed du­ring the weekly ses­si­on. De­tails will be dis­cus­sed du­ring the first mee­ting.

mi­ni­K­an­ren Code

In order to start run­ning mi­ni­K­an­ren ex­am­ples in DrRa­cket put the fol­lo­wing im­ple­men­ta­ti­on file into a di­rec­to­ry:

Crea­te a file myFile.rkt in the same di­rec­to­ry and start with the fol­lo­wing in­can­ta­ti­on:

#lang racket
(require "implementation.rkt")

Ter­mi­ne

  • Thurs­day, 5.11.2020 18:15 via Big­Blu­e­But­ton (First mee­ting)
  • All fur­ther mee­tings will be an­noun­ced in the forum.