3 ms·
By allowing you to use the features of the host language to complement the features of miniKanren. Having good support for multiple programming paradigms is be
by GregDavidson 2y ago
By allowing you to use the features of the host language to complement the features of miniKanren. Having good support for multiple programming paradigms is better than trying to make one paradigm fit all needs.
Poplog[1] was an earlier attempt to provide such synergies but it failed to gain market share. It's now free software so take a look!
The Racket ecosystem is another approach where each module can choose a language with some of them being Prolog-like[2].
[1] https://en.m.wikipedia.org/wiki/Poplog https://en.m.wikipedia.org/wiki/Poplog
[2] https://racket-lang.org/languages.html https://racket-lang.org/languages.html
- rscho 2y agoOk, but MiniKanren isn't intrinsic to Scheme. I agree Racket makes it especially easy to embed sub languages, but you could embed core relational Prolog just as well as MiniKanren. My understanding of your statement is that Scheme and MiniKanren share sexp syntax, but the same applies: you could embed an sexp-based Prolog just as well. The only remaining MiniKanren advantage is then to have a complete search strategy, this I concede.
- GregDavidson 2y agoI didn't connect miniKanren to Scheme. I said "Host Language." I did suggest the value of a multi-paradigm host language.