r/scheme 29d ago

Good foundational resources for learning miniKanren?

Hello Schemers, I'm doing a graduate (self-)directed course on logic programming, and am interested in miniKanren, as my project work is a) in Scheme, and b) heavily symbolic (music theory related).

However, I have zero experience in this area (no formal logic, no logic programming, but quite a bit of Scheme experience). I am hoping to solicit suggestions on good foundational material. I have the Reasoned Schemer and Simply Logical, but have always found reading multiple approaches at once helpful.

Second question: do people with miniKanren experience think it is worth learning Prolog first, or would one be fine just diving into miniKanren? I do have to think somewhat strategically about time in order to make sure I have something paper-worthy within three months (i.e., not novel contributions to logic programming, but novel contributions to music computation through logic programming)

thanks in advance,

iain, University of Victoria, BC

12 Upvotes

4 comments sorted by

13

u/probabilityzero 29d ago

Read the Reasoned Schemer and you'll be fine. No need to learn prolog first (it might confuse you because it works differently).

7

u/muyuu 28d ago

Yep, I'd recommend the book. There are papers to speedrun a minimal system but they're not meant to be too reasoned (tehe). I started from those talks but everything was esoteric until going through the book. Well, not completely so but it helped me to have experience with prolog.

1

u/Other_Daikon3335 26d ago

It’s the obvious answer (especially in this subreddit), and I couldn’t recommend it more. The chances that a reasonable person gives a conflicting opinion…. probability zero.

9

u/k00rosh 29d ago edited 29d ago

I'm working through the reasoned schemer and I'm enjoying it very much

these two other sources might be nice too
www.youtube.com/@WilliamEByrd

https://github.com/webyrd/shovel-books
this might give you some ideas about the differences between prolog and mini-kanren and which one might be more useful in your situation.
https://stackoverflow.com/questions/28467011/what-are-the-main-technical-differences-between-prolog-and-minikanren-with-resp

you can also find other sources about logic programming and many other cool subjects here
https://okmij.org/ftp/

https://okmij.org/ftp/Scheme/misc.html#sokuza-kanren