This post describes formal logic embedded in formal logic. It sounds really weird but a simple example will illustrate why it might be useful.
Effectively propositional abductive problems can be cast in terms of satisfiability. This post shows when it's possible and how to do it.
Automated planning is the task of finding a plan to achieve a goal given some prerequisites. Planning problems can be cast in terms of abductive theories which allows us to use an abductive prover to find the best plan.
Parsing reveals the syntactic structure of a sentence. Abduction is inference to the best explanation. We show in this post that context-free parsing is a special case of abductive reasoning.
Formal logics are axiomatic systems that formalise inference. Let’s look at what higher-order logic is and how it can be worked with.
This post is about an extension of Prolog which makes it a more useful and user-friendly logic programming language.
Swift 4.1 brought an improvement to the language's type system called conditional conformance, which allows you to specify that a generic class conforms to a protocol based on the generic arguments' conformance to protocols. A simple example is presented.
Applicative functors are less general than functors but more general than monads, which makes them useful in some scenarios. Swift is sufficiently functional to admit a straightforward implementation.
Implementing monads in C++ is a little tricky, since there are no higher-kinded types. We can however use template specialisation to achieve the same effect.
In functional programming, fixpoints of data types are used to define recursive types. Let’s see an example of how one can use this technique in C++.
The fixpoint operator (\(\mu\)) on functions provides a way of converting nonrecursive functions into recursive ones. Let's learn how to implement it in Python and C++.
The recently released C++17 provides a new type, std::variant, for implementing sum types. This post focusses on its basic use.
While not part of the language, it's perfectly possible to automatically manage memory in C. Let's look at how to implement a simple object system with garbage collection.
...a monoid in the category of endofunctors. This enigmatic sentence keeps perplexing beginner programmers. In this post we dissect it so you don't have to read a whole book on category theory in order to understand what it means.
In functional programming, fixpoints of data types are used to define recursive types. Let’s see an example of how one can use this technique in Python.
Intuitively, entropy is the measure of in how many states a system can be. But how can we arrive from this intuition at \( H(X)= -\sum_i p_i \log p_i \)?
A monad is an abstract concept used in functional programming to sequence computation, but it can also be useful in OOP. Let's take a look at how to implement monads in Python.
This post is the first part of a miniseries on developing web apps with Go, a C-like programming language designed at Google.