From the hub

Functional Prolog: Map, Filter and Reduce

Prolog programs have both logical and procedural meanings. In this post we'll take a look at procedural ideas more commonly associated with functional programming than Prolog, namely: map, filter and reduce (foldl and foldr). We'll code them and then query them.


Prolog Fundamentals Catchup

This post is external to PrologHub

Three Prolog fundamentals that I wish I'd understood earlier


Tips on planning, documenting, and testing a SWI-Prolog project

In the process of developing a fairly large SWI-Prolog project, I've developed some experience at using PlDoc — which actually goes beyond being an automated documentation system, doubling as an integrated development environment — and PlUnit, which I'll share here.


A Prolog Language Server

This post is external to PrologHub

Announcing my Prolog LSP implementation and discussing how it was implemented


Transitive relations, a deeper dive.

Transitive relations show up a lot in AI code, in this post we look at a couple of ways to code them that depend on what you can assume about your domain and what Prolog you're using.


"Hello, <name>!", the second program improved.

After "Hello, world!" it's typical to write a program that asks the user's name and greets them. In this post we learn how to do this in SWI-Prolog without requiring a full-stop.


Reification By Example

Reify: (v) To represent something abstract as a concrete thing.

Reification is a tool in the bag of tricks that can be quite tricky to understand. Rather than waffle on in the abstract, let's take a look at a few examples.