https://github.com/brandonwillard/hypokanren
A microKanren implementation in Hy with constraints
https://github.com/brandonwillard/hypokanren
constraint-programming hy logic-programming microkanren relational-programming
Last synced: 3 months ago
JSON representation
A microKanren implementation in Hy with constraints
- Host: GitHub
- URL: https://github.com/brandonwillard/hypokanren
- Owner: brandonwillard
- Created: 2018-11-18T19:44:19.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-03-21T22:00:27.000Z (about 7 years ago)
- Last Synced: 2025-10-19T16:04:08.525Z (7 months ago)
- Topics: constraint-programming, hy, logic-programming, microkanren, relational-programming
- Language: Hy
- Homepage:
- Size: 53.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
hypoKanren
========
An implementation of [microKanren][mk] with constraints in [Hy][hylang].
Currently, this project serves as a staging ground for a possible large-scale
refactoring of the main miniKanren-in-Hy project, [`loghyc`][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`][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`)
[mk]: http://minikanren.org/
[hylang]: http://hylang.org/
[hydiomatic]: https://github.com/algernon/hydiomatic
[loghyc]: https://github.com/algernon/adderall
[pyrsistent]: https://github.com/tobgu/pyrsistent