A collection of Kanren implementations in Julia
18 Stars
Updated Last
2 Months Ago
Started In
January 2015

π•³π–Šπ–—π–Š π–‡π–Š π•Άπ–†π–“π–—π–Šπ–“π–˜**β€Ό**

Welcome to lilinjn's[1] Institute for Search Research!

Just like Mitt, I'd like a binder full of kanren, and so I am collecting my assortment of notebooks on the topic in this repo.

Each notebook implements a (typically self-contained) kanren in a conversational style, while exploring a spectrum of design issues. The code is meant mostly to be read and twiddled interactively. At some later point the various lessons learned may be baked into library form suitable for public consumption.


  • Demo: A quick demonstration of the current state of affairs

  • FirstSteps: A translation of Β΅Kanren with some exploration of Julia specific features to create nice syntax

If you are just browsing, and would rather not be bothered by the hassles of cloning the repo, setting up IJulia, and such -- then the above links to pre-rendered versions of the notebooks may be the path for you.

However, interactive fiddling is highly encouraged -- again, for those seeking the path of least resistance, JuliaBox and/or Juno are good places to start.

lilinjn's Dogma of Search

The dogma is so designed to foster intuition about the geometry of search. The issue at hand is no different than the quandry of when to introduce calculators in grade school.

  • Thou shalt not prophylactically zzz, lest you never overcome your fear of the Dragon.
  • Thou shalt not reify, lest your bones become brittle.
  • Thou shalt not take or run without first learning to step, so that you may better hear the gentle rhythms of thunk, thunk, dribble, thunk, dribble, dribble, thunk...
  • Thou shalt not occursβœ“, because we should not be afraid of our own shadow, but instead rejoice in our infinite potential.
  • Friends don't let friends use macros -- at least, not those made of sugar. Macros made of acid may be a different story...

Bucket List

  • Threading the Needle: Further experiments in syntax
  • A Mere Trifle aka The Bourgeois Ascendency: A Persistent Vector Store+Union-Find Walker and benchmarking paraphenalia
  • Looking into the Abyss: Visualizing the Geometry of Search
  • Searching for 𝕳𝔒𝔯𝔯 𝕯𝔬𝔨𝔱𝔬𝔯 𝕳𝔬𝔭𝔣: No not that one, the other one.

What th' Wuh?

We shall not cease from exploration, and the end of all our exploring will be to arrive where we started and know the place for the first time. -- T.S. Eliot

[1] ↩:lilinjn ≑ :habemus-papadum