<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Coding Guidelines for Prolog · HackerPapers discussions</title><link>https://hackerpaper.kaipfister.de/p/0911.2899/</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/0911.2899/feed.xml" rel="self" type="application/rss+xml" /><item><title>Coding Guidelines for Prolog — mentioned by YeGoblynQueenne</title><link>https://news.ycombinator.com/item?id=41831230</link><guid isPermaLink="false">urn:hackerpapers:mention:0911.2899:41831230</guid><pubDate>Sun, 13 Oct 2024 20:20:14 GMT</pubDate><description>&lt;p&gt;&amp;gt;&amp;gt; Right now this seems to have all the downsides of programming exclusively with &amp;quot;magic strings&amp;quot;, and I haven&amp;#x27;t been able to find any cure for it or even seen this problem discussed elsewhere. The cure is to not try to program with &amp;quot;magic strings&amp;quot;. You don&amp;#x27;t need to, and if you really want to, then you should try to understand what exactly it is that you&amp;#x27;re doing, and do it right. Specifically, what you call &amp;quot;magic strings&amp;quot; are what we call &amp;quot;functions&amp;quot; in First Order Logic, and that Prolog calls compound terms, like carring_rock(robot(R)) which is in fact two compound terms, nested. Prolog…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/0911.2899/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Coding Guidelines for Prolog — HN submission</title><link>https://news.ycombinator.com/item?id=37622632</link><guid isPermaLink="false">urn:hackerpapers:submission:0911.2899:37622632</guid><pubDate>Sat, 23 Sep 2023 12:20:42 GMT</pubDate><description>&lt;p&gt;Coding Guidelines for Prolog (2011)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;126 points; 14 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/0911.2899/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Coding Guidelines for Prolog — mentioned by YeGoblynQueenne</title><link>https://news.ycombinator.com/item?id=37494850</link><guid isPermaLink="false">urn:hackerpapers:mention:0911.2899:37494850</guid><pubDate>Wed, 13 Sep 2023 10:28:40 GMT</pubDate><description>&lt;p&gt;Do I have any hints? Oh dear. The advice in this technical report is sound: Coding Guidelines for Prolog https://arxiv.org/abs/0911.2899 It goes over some style matters but also makes more practical recommendations about using the language for best results. I have followed those guidelines in the last few years, often before reading the book, and they have generally served me well. My own, very personal advice is to avoid the dynamic database as if it was the plague. To clarify, the &amp;quot;dynamic database&amp;quot; refers to the use of assert/1, retract/1 and friends to add to, and remove clauses from the…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/0911.2899/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Coding Guidelines for Prolog — mentioned by YeGoblynQueenne</title><link>https://news.ycombinator.com/item?id=26774434</link><guid isPermaLink="false">urn:hackerpapers:mention:0911.2899:26774434</guid><pubDate>Sun, 11 Apr 2021 23:16:57 GMT</pubDate><description>&lt;p&gt;Nice, but this: should_isolate(Person) :- has_symptoms(Person); tested_positive(Person); ( lives_with_others(Person), format(atom(LivingWithPeople), &amp;#x27;anyone living with ~w&amp;#x27;, Person), ( has_symptoms(LivingWithPeople); tested_positive(LivingWithPeople) ) ); ( in_bubble(Person), format(atom(BubblePeople), &amp;#x27;anyone in ~w\&amp;#x27;s bubble&amp;#x27;, Person), ( ( has_symptoms(BubblePeople), contact_with_symptomatic_bubble_member(Person) ); ( tested_positive(BubblePeople), contact_with_positive_bubble_member(Person) ) ) ); contacted_by_test_and_trace(Person); ( arrived_from_abroad_recently(Person), \+…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/0911.2899/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Coding Guidelines for Prolog — HN submission</title><link>https://news.ycombinator.com/item?id=25237521</link><guid isPermaLink="false">urn:hackerpapers:submission:0911.2899:25237521</guid><pubDate>Sat, 28 Nov 2020 13:56:29 GMT</pubDate><description>&lt;p&gt;Coding Guidelines for Prolog (2009)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;7 points; 2 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/0911.2899/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Coding Guidelines for Prolog — mentioned by YeGoblynQueenne</title><link>https://news.ycombinator.com/item?id=12670696</link><guid isPermaLink="false">urn:hackerpapers:mention:0911.2899:12670696</guid><pubDate>Sun, 09 Oct 2016 10:55:24 GMT</pubDate><description>&lt;p&gt;&amp;gt;&amp;gt; getting Prolog to do cool things quickly involved knowing precisely where to put cut operators, and that was basically black magic. But it&amp;#x27;s been a while. To add to tom_mellior&amp;#x27;s much upvoatable reply, I find that the cut is much less painful if you keep your predicates small and mind separation of concerns, as you should anyway. A good recommendation about when to use the cut operator is &amp;quot;as soon as undesired nondeterminism happens&amp;quot;. With short and to-the-point predicates this is much easier to do. Finally- the Prolog community has a term for two types of cut, the &amp;quot;green cut&amp;quot; and &amp;quot;red…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/0911.2899/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Coding Guidelines for Prolog — HN submission</title><link>https://news.ycombinator.com/item?id=1023192</link><guid isPermaLink="false">urn:hackerpapers:submission:0911.2899:1023192</guid><pubDate>Wed, 30 Dec 2009 20:47:38 GMT</pubDate><description>&lt;p&gt;Coding Guidelines for Prolog&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;7 points; 0 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/0911.2899/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item></channel></rss>
