What Is miniKanren?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured
  1. scryer-prolog

    A modern Prolog implementation written mostly in Rust.

    It hasn't been embedded in the main branch yet, but you can embed Scryer in Python now[1], and it's quite enjoyable. I've also embedded in Java, Clojure, and elisp[2] :)

    The Clojure one is bundled up into a library called libscryer-clj, which I haven't released yet, but it operates the same way as libpython-clj[3], libapl-clj[4], and libjulia-clj.

    [1]: https://github.com/jjtolton/scryer-prolog/blob/ISSUE-2464/sc...

    [2]: https://github.com/mthom/scryer-prolog/discussions/2687

    [3]: https://github.com/clj-python/libpython-clj

    [4]: https://github.com/cnuernber/libjulia-clj

    [5]: https://github.com/jjtolton/libapl-clj

    As an aside, Scryer is hella ergonomic. clpz+reif is an amazing and amazingly powerful combination, and the DCG philsophy over double quoted strings is chefs kiss.

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. reason

    Neural Guided Constraint Logic Programming for Neural Architecture Search (by eihli)

  4. microKanren

    The implementation of microKanren, a featherweight relational programming language

    The paper on microKanren [1] is imho the most approachable piece outside the "reasoned schemer" [2]. The thesis on which it is based is also interesting but is a thicker beast. Looking at stuff from the clojure world (clojure.core.logic and this talk [3]) is also interesting imho, especially from a dev perspective. From this point of view I found this talk [4] to be especially enlightening in how to build a database / query engine and concrete applications of MiniKanren / datalog.

    [1] https://github.com/jasonhemann/microKanren

    [2] https://mitpress.mit.edu/books/reasoned-schemer-second-editi...

    [3] https://www.youtube.com/watch?v=irjP8BO1B8Y&ab_channel=Cloju...

    [4] https://www.youtube.com/watch?v=y1bVJOAfhKY&t=10s&ab_channel...

  5. kanren

    An extensible, lightweight relational/logic programming DSL written in pure Python

    Is that even possible for something like this? You've got a pretty long list of implementations, each having its own language specific syntax, e.g. https://github.com/pythological/kanren for one python version - and there are several Python versions linked on the homepage.

  6. sokuza-kanren

    Oleg Kiselyov's minimal implementation of logic programming

    I found sokuza-kanren [0] to be a wonderful introduction. It starts with the absolute basics and builds into a minimal logic system through a series of well-documented steps.

    [0] https://github.com/miniKanren/sokuza-kanren

  7. scryer-prolog

    A modern Prolog implementation written mostly in Rust. (by jjtolton)

    It hasn't been embedded in the main branch yet, but you can embed Scryer in Python now[1], and it's quite enjoyable. I've also embedded in Java, Clojure, and elisp[2] :)

    The Clojure one is bundled up into a library called libscryer-clj, which I haven't released yet, but it operates the same way as libpython-clj[3], libapl-clj[4], and libjulia-clj.

    [1]: https://github.com/jjtolton/scryer-prolog/blob/ISSUE-2464/sc...

    [2]: https://github.com/mthom/scryer-prolog/discussions/2687

    [3]: https://github.com/clj-python/libpython-clj

    [4]: https://github.com/cnuernber/libjulia-clj

    [5]: https://github.com/jjtolton/libapl-clj

    As an aside, Scryer is hella ergonomic. clpz+reif is an amazing and amazingly powerful combination, and the DCG philsophy over double quoted strings is chefs kiss.

  8. libpython-clj

    Python bindings for Clojure

    It hasn't been embedded in the main branch yet, but you can embed Scryer in Python now[1], and it's quite enjoyable. I've also embedded in Java, Clojure, and elisp[2] :)

    The Clojure one is bundled up into a library called libscryer-clj, which I haven't released yet, but it operates the same way as libpython-clj[3], libapl-clj[4], and libjulia-clj.

    [1]: https://github.com/jjtolton/scryer-prolog/blob/ISSUE-2464/sc...

    [2]: https://github.com/mthom/scryer-prolog/discussions/2687

    [3]: https://github.com/clj-python/libpython-clj

    [4]: https://github.com/cnuernber/libjulia-clj

    [5]: https://github.com/jjtolton/libapl-clj

    As an aside, Scryer is hella ergonomic. clpz+reif is an amazing and amazingly powerful combination, and the DCG philsophy over double quoted strings is chefs kiss.

  9. Stream

    Stream - Scalable APIs for Chat, Feeds, Moderation, & Video. Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.

    Stream logo
  10. libjulia-clj

    Julia bindings for Clojure -- Currently somewhat unstable --

    It hasn't been embedded in the main branch yet, but you can embed Scryer in Python now[1], and it's quite enjoyable. I've also embedded in Java, Clojure, and elisp[2] :)

    The Clojure one is bundled up into a library called libscryer-clj, which I haven't released yet, but it operates the same way as libpython-clj[3], libapl-clj[4], and libjulia-clj.

    [1]: https://github.com/jjtolton/scryer-prolog/blob/ISSUE-2464/sc...

    [2]: https://github.com/mthom/scryer-prolog/discussions/2687

    [3]: https://github.com/clj-python/libpython-clj

    [4]: https://github.com/cnuernber/libjulia-clj

    [5]: https://github.com/jjtolton/libapl-clj

    As an aside, Scryer is hella ergonomic. clpz+reif is an amazing and amazingly powerful combination, and the DCG philsophy over double quoted strings is chefs kiss.

  11. libapl-clj

    GNU APL native interop for Clojure

    It hasn't been embedded in the main branch yet, but you can embed Scryer in Python now[1], and it's quite enjoyable. I've also embedded in Java, Clojure, and elisp[2] :)

    The Clojure one is bundled up into a library called libscryer-clj, which I haven't released yet, but it operates the same way as libpython-clj[3], libapl-clj[4], and libjulia-clj.

    [1]: https://github.com/jjtolton/scryer-prolog/blob/ISSUE-2464/sc...

    [2]: https://github.com/mthom/scryer-prolog/discussions/2687

    [3]: https://github.com/clj-python/libpython-clj

    [4]: https://github.com/cnuernber/libjulia-clj

    [5]: https://github.com/jjtolton/libapl-clj

    As an aside, Scryer is hella ergonomic. clpz+reif is an amazing and amazingly powerful combination, and the DCG philsophy over double quoted strings is chefs kiss.

  12. GTPyhop

    A task-planning system based on Pyhop, but generalized to plan for both goals and tasks.

    Neat.

    > The six simple building blocks: variables, states, and the four kinds of goal — make two values equal, provide local variables to an existing goal, pursue two existing goals separately, and pursue two existing goals together.

    I'll play with it more.

    I have a port of https://github.com/dananau/GTPyhop and planner systems feel related to relation programming

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

Did you know that Clojure is
the 27th most popular programming language
based on number of references?