Relational Programming in miniKanren by William Byrd, Part 2/2





The interactive transcript could not be loaded.


Rating is available when the video has been rented.
This feature is not available right now. Please try again later.
Published on May 15, 2014

A gentle introduction to relational programming (also known as pure logic programming), using the miniKanren programming language. miniKanren is the subject of 'The Reasoned Schemer' (MITPress, 2005), and the basis for David Nolen's popular Clojure library, core.logic.

Relational programming makes no distinction between a function's "input" and "output". For example, in relational programming we can write '3 + 4 = x'. Here, x is a logic variable that is associated with 7. We can also write '3 + x = 7'. In this case, x is associated with 4; the '+' relation can perform subtraction. More interestingly, we can write 'x + y = 7', which returns all pairs of integers x and y that sum to 7. We can even write 'x + y = z', to enumerate all triples of integers whose first two values sum to the third value.

The real fun begins when we write interpreters in a relational style, as we shall see!

The talk will be divided into two parts: a gentle introduction to logic programming and miniKanren, followed by a demonstration of more advanced uses of miniKanren, including automatic generation of programs from their logical specifications.

About William Byrd

William Byrd is a Postdoctoral Researcher in the School of Computing at the University of Utah. He is co-author of 'The Reasoned Schemer', and co-designer of several declarative languages, including miniKanren.


When autoplay is enabled, a suggested video will automatically play next.

Up next

to add this to Watch Later

Add to

Loading playlists...