From the hub, in category: "Introductory"

The "many worlds" design pattern

This post is external to PrologHub

The many worlds design pattern is one of the most common patterns in Logtalk and Prolog applications. It allows reasoning about different worlds, where a world can be e.g. a dataset, a knowledge base, a set of examples. While this design pattern can be ...


Facts and Fluents vs Constants and Variables

In Prolog we have facts rather than constants, fluents rather than variables. This post is another terminology breakdown with examples and comparison to features common in other programing languages.


Predicates vs Functions

People from other languages often get a little confused with these predicate things, especially as their syntax looks similar to functions in other languages. In this post we contrast predicates and functions and demonstrate the advantage of using predicates over functions.


Partial Predicates

Did you know you can call partial predicates with arguments added later on? This is how many of the higher order predicates like `maplist` work. But you can take advantage of this too! Let's take a look at `call`.


Difference Lists Explored

Difference Lists are a very powerful and useful tool. They're also difficult to understand and can result in difficult to read code. In this post we'll address both of these issues.


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