All about Prolog, Mercury and other logic programming languages.
Two Turing Machines
For fun I wrote two universal Turing machines: one in Prolog, one in Mercury. This led me to some observations about type systems and their spheres of utility.
Setting up Emacs with Flymake for Mercury
Quick guide on how to get Emacs have Mercury code 'flymade' so you can see the errors as you edit the code.
Meta-Predicates in SWI-Prolog
The meta_predicate directive in Prolog can cause confusion when first encountered for two reasons: 1, it is a horrible, horrible hack; 2, documentation for it is badly-written by people who know what they mean but not how to express it. There is the further problem that each dialect does it differently (this being Pro-"what's a standard?"-log). Here's my attempt to make things a bit less confusing for SWI-Prolog (and probably YAP) users.
Mercury's "Time to Hello World"
There's an interesting metric for language accessibility (and therefore, by extension, often its popularity) called "Time to Hello World". Mercury's "Time to Hello World" is abysmal. In this blog entry I will analyse both why it is so bad and what can be done to improve it.
Curry: a Functional Logic Language
Sure I may be a Mercury fanboi, but there are actually other functional logic languages out there. Curry is one of those. From the blurb: "Curry is a universal programming language aiming to amalgamate the most important declarative programming paradigms, namely functional programming and logic programming. Moreover, it also covers the most important operational principles developed in the area of integrated functional logic languages: 'residuation' and 'narrowing'."