I have a feature request for the https://minikanren.org/ website: just one prominent block of example code on that homepage (as early as possible) would be REALLY useful for helping understand at a glance what kind of language this is.
I even clicked through quite a few of those prominent early links and didn't find a code example!
On top of that: some examples of the kinds of problems miniKanren can solve, based on real world examples rather than purely abstract concepts (e.g. "given a set of available air flights with origins, destinations, and prices, find me the cheapest way to get from Seattle to London")
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.
Hey! Thanks for all of the work you do. I love reading your stuff.
Lately, I've been playing a lot with the code from Neural Guided Constraint Logic Programming for Program Synthesis [1]. I want to apply it to searching for neural network architectures. Something like:
And a `layerso` that is just a sequence of `layers`. And then use some metric that captures how effective the training run was and use that metric for teaching the search network.
I'm sure there's better ways to do it than the way I'm going about it. But it's a fun way to learn a bunch of cool new stuff.
miniKanren was my introduction to relational programming (SQL aside!), and I had hours of trying to wrap my head around the Reasoned Schemer.
Were you aware a miniKanren-inspired language was the foundation of a large chunk of Amazon's retail data aggregation stack? I'm no longer there, but it might be one of the larger deployments out there. We spent many many hours trying to figure out the best way to run the relational engine at scale and with acceptable performance.
Hi! Sorry to be late to the party. I don't really understand how relational programming relates to discrete optimization and constraint programming.
I did several MOOCs on discrete optimization and I understand how a constraint solver works, and how local search works, for example. I also understand how a SAT solver works.
I just do not understand what logic/relational programming does. Is that a constraint solver solving just one kind of constraint, ie logic equations, a bit like a SAT solver?
[Edit] on my side I was really impressed by a paper using Minikanren to generate an algorithm, a sorting function if I remember well. It was about 8 years ago. Tried to fully understand the paper but gave up at some point.
I'm interested in a miniKanren port, or something like it, to TXR Lisp. I would possibly make it a part of the standard library of the language, so programs could rely on it just being there.