Introduction

Compilers are often seen as an almost magical, mystical component in the art of software development. Even to the modern developer they can be an unapproachable beast that spits cryptic error messages and breathes warnings (that are usually ignored). This series aims to show that compilers are just an ordinary software program the same as any other, albeit by using an an almost equally confounding programming language.

We will be following the general approach and outline that is presented in [1] and this series is in large part directly inspired by Crenshaw’s work.

Disclaimers

It is assumed that the reader has a basic knowledge of programming, in any langauge, including the ability to navigate the command line. I am a software engineer, not a computer scientist, so I will be explaining many of the concepts in a manner that makes sense to me but may not necessarily be 100% correct at a theoretical level. Similarly, I am not a Haskell expert so the implementation will likely not be the most efficient or idiomatic.