Post Functional
summary
An implementation of miniKanren in Clojure called core.logic provides unification for Clojure maps, polymorphic unification via protocols, pluggable constraint solvers and a fair disjunction scheduler that diagonally interleaves branches. It solves the zebra puzzle 1,000 times in 2.5 ms (versus 17 s in Norvig’s Lisp), solves a Sudoku in ~18 ms, and exposes constraint domains (finite integers, inequalities) while remaining ~4,000 LOC and extensible for new solvers.
AI-written summary · about
chapters (14)
- 0:00Start
- 2:14Organizing Functional Code for Parallel Execution
- 4:28Corelogic
- 6:41Core Logic
- 7:48Corelogic Code
- 8:58Logical Conjunction
- 9:31Logic Variables
- 11:38Functional Programming and Logic Programming
- 13:34Substitution Map
- 14:48Depth First
- 24:46Unification for Maps
- 25:32Implement Unified Terms
- 29:55Sudoku
- 34:52Provide New Constraint Solvers
related talks
44mA Vision for Relational Programming in miniKanren
23mImproving stableKanren’s Backward Compatibility
34mSolving Problems Declaratively
20mClojure Tools for Symbolic Artificial Intelligence
38mScientific Clojure, a bird's eye view
10mSATisfying answers to difficult questions!
40mGenetic Programming in Clojure
36mPlaying Go with Clojure
