Assignment 11: Scheme Interpreter in miniKanren

Revisions and Clarifications

Starting from this template, translate our standard Scheme interpreter into miniKanren. As usual, your code must run both forwards and backwards.

Your interpreter must support:

You needn't implement call/cc.

You should use data structural representation of closures and environments.

The stubs for the eval-expo, base-envo, extend-envo, and apply-envo relations are provided in the template.

The template includes many test programs--make sure they all pass. You may need to reorder your goals to ensure that the tests terminate. As a general rule, unifications should come before recursive calls.

In addition to the template, make sure you have the most recent versions of these files:

This is not a trivial assignment. Start early, and ask lots of questions during lab! And make sure you have read The Reasoned Schemer.

Brainteaser

Add call/cc to your interpreter.

Revisions and Clarifications

None yet.