On this page:
mini  Kanren-typed:   Typed mini  Kanren
9.3.900

miniKanren-typed: Typed miniKanren🔗ℹ

This package provides Typed Racket implementations of microKanren and of the miniKanren languages of both editions of The Reasoned Schemer:

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.

    1 microKanren

      1.1 Types

      1.2 Streams

        1.2.1 Pauses

        1.2.2 Constructing Streams

        1.2.3 Reading Streams

        1.2.4 Forcing Streams

        1.2.5 The Stream Monad

      1.3 The Core

        1.3.1 Goal Constructors

        1.3.2 Unification

      1.4 User-Level Forms

        1.4.1 Goal Forms

        1.4.2 Running Goals

        1.4.3 Reification

    2 First Edition

      2.1 Implementation Basis

      2.2 Types

      2.3 Running Programs

      2.4 Goals

      2.5 Substitutions and Unification

      2.6 Streams

        2.6.1 Constructing Streams

        2.6.2 Reading Streams

        2.6.3 Lambdas and case∞

        2.6.4 The Operators of the Appendix

    3 Second Edition

      3.1 Implementation Basis

      3.2 Types

      3.3 Running Programs

      3.4 Goals and Relations

      3.5 Substitutions and Unification

      3.6 Streams

        3.6.1 Pauses

        3.6.2 Constructing Streams

        3.6.3 Reading Streams

        3.6.4 Forcing Streams

        3.6.5 Stream Operations of Chapter 10

    4 Comparing the Editions

      4.1 The Language

      4.2 Streams

      4.3 Search

      4.4 Committed Choice