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:
zero?sub1if expressionslambda expressionsYou 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.
call/cc to your interpreter.