miniKanren-typed: Typed miniKanren
This package provides Typed Racket implementations of microKanren and of the miniKanren languages of both editions of The Reasoned Schemer:
typed/microKanren: microKanren (Hemann and Friedman, 2013), the minimal functional core.
typed/miniKanren/trs1: the first edition (Friedman, Byrd, and Kiselyov, MIT Press, 2005), with the depth-first conde and all, the interleaving condi and alli, and the committed-choice conda and condu.
typed/miniKanren/trs2: the second edition (Friedman, Byrd, Kiselyov, and Hemann, MIT Press, 2018), with defrel and an interleaving conde.
Each implementation follows its original code closely, so that it can be read alongside it, and gives every definition a type, so that the structure of the implementation (terms, substitutions, goals, and the streams that carry answers) is visible in the types. Every internal operator is exported.
The modules export many of the same names, so a program should require only one of them, or use prefix-in.