Skip to content

Latest commit

 

History

History
34 lines (25 loc) · 1.18 KB

README.md

File metadata and controls

34 lines (25 loc) · 1.18 KB

hypoKanren

An implementation of microKanren with constraints in Hy.

Currently, this project serves as a staging ground for a possible large-scale refactoring of the main miniKanren-in-Hy project, loghyc (soon to be formerly known as adderall).

Design

Efforts to better utilize Python and Hy features within this implementation are ongoing, but—to start—the stream processing and delayed goal evaluation are, naturally, implemented with Python generators, and some uses of association lists have been replaced by immutable dictionaries (via pyrsistent) and/or custom classes.

Outside of the miniKanren DSL, this project attempts to share some of the internal API (e.g. stream and utility function names and signatures) with the published implementations.

Features

  • Standard microKanren with some basic miniKanren goals (e.g. run, fresh, conde)
  • Constraints (e.g. =/=, absento, symbolo)