We will give a tour of functional and relational interpreters in
Scheme and the logic-programming language miniKanren. We will begin with a traditional interpreter for a Scheme-like language in Scheme, and will ultimately develop an interpreter for the same language in miniKanren. The latter will run forward for values, backward for expressions, and will synthesize programs that are difficult to believe.