- design
- emphasis on pure relations and finite failure (thesis, p. 7)
- differences from other logic programming languages
- "complete (interleaving) search strategy" (compared to Prolog)
- "full unification" (compared to Mercury, where functions are specialized depending on input and output arguments, which are annotated as such, disallowing functions with only "output" arguments)
- avoidance of Curry's residuation (suspending certain operations until they can operate on non-ground values)
- questions
- logic + numbers = undecidable. why?
exist
vsfresh
- mukanren.scm
- µKanren - A Minimal Functional Core for Relational Programming, original source code
- Lambda Lounge: Relational Programming in miniKanren by William Byrd:
- The Reasoned Schemer
- Petite Chez Scheme
- miniKanren implementation,
use
(load "<path-to-dir>/mk.scm")
to load it in petite - http://minikanren.org
- Negation as failure
- Negation as failure
in
core.logic
(code), including some notes from Dan Friedman why you often don't want that. - William E. Byrd notes in his thesis that you can implement negation as failure in
miniKanren using
conda
andcondu
(p. 84, footnote #3)
- Negation as failure
in