Skip to content

miniKanren/TheReasonedSchemer

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

TheReasonedSchemer

Original code from 'The Reasoned Schemer' (MIT Press, 2005) by Daniel P. Friedman, William E. Byrd and Oleg Kiselyov.

This implementation uses an older version of miniKanren. Newer versions of miniKanren have a simpler language, simpler implementation, and improved performance. (For example, condi has been replaced by an improved version of conde which performs interleaving.).

The code is divided into four files:

mk.scm contains the miniKanren core forms.

mkextraforms.scm contains run* and project.

mkprelude.scm contains useful helper relations, including the full arithmetic system from chapters 7 and 8.

mktests.scm contains essentially every piece of code in the book, along with appropriate tests.

To run all the tests, simply load mktests.scm in an R5RS-compatible Scheme system:

> (load "mktests.scm")

To just play around with miniKanren, instead load mkprelude.scm.

About

Code from 'The Reasoned Schemer' (MIT Press, 2005) by Daniel P. Friedman, William E. Byrd and Oleg Kiselyov.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages