Hosted miniKanren: Reconciling Optimizing Compilation and Extensibility
summary
A hosted miniKanren embeds a macro-spec grammar in Racket using the syntax-spec macro to produce a small core language that an optimizing compiler consumes, while keeping user macros hygienic and statically checked. A persistent symbol table records relation arities for separate compilation and arity errors. The foreign interface enforces an expression→term/goal boundary that wraps logic variables when crossing to Racket, enabling safe database-backed relations. Optimizations include constant propagation and dead-code elimination that undo macro overhead and occurs-check elimination via a simple abstract interpretation.
AI-written summary · about
chapters (14)
- 0:00Hosted miniKanren intro
- 2:33DSL implementation trade-off
- 6:48Core miniKanren language
- 10:39Grammar and binding errors
- 15:57Compiling core language
- 18:56Macro extensibility in miniKanren
- 22:32Integrating optimizing compiler
- 24:41Static semantics with arity checks
- 28:35Constant propagation for extensions
- 35:50Host language code interaction
- 41:53Querying real-world data
- 45:02Database-friendly extensions
- 46:52Optimizing across boundaries
- 52:14Summary and future
