<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>A Framework for Extending microKanren with Constraints · HackerPapers discussions</title><link>https://hackerpaper.kaipfister.de/p/1701.00633/</link><description>Collected HN comments and submissions linking this paper.</description><language>en</language><lastBuildDate>Mon, 02 Nov 2026 11:16:22 GMT</lastBuildDate><atom:link href="https://hackerpaper.kaipfister.de/p/1701.00633/feed.xml" rel="self" type="application/rss+xml" /><item><title>A Framework for Extending microKanren with Constraints — mentioned by DonbunEf7</title><link>https://news.ycombinator.com/item?id=14712395</link><guid isPermaLink="false">urn:hackerpapers:mention:1701.00633:14712395</guid><pubDate>Thu, 06 Jul 2017 18:01:10 GMT</pubDate><description>&lt;p&gt;I am neither Byrd nor Friedman but I will try my best. The short answer is that it doesn&amp;#x27;t compose very well, especially when doing relational programming. Let&amp;#x27;s say that `people` is a record of some sort, and not a relation. That is, when we extract people, we get records of data which we can manipulate, and not a set of functions which let us relate the records to each other. Now, imagine a logical query which has the following steps: exists p :Person guard p.name == &amp;quot;Titus&amp;quot; exists gp :Person ? isGrandParent(gp, p) call scan(gp) return gp, p How is this actually going to be executed? Well…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1701.00633/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item></channel></rss>
