Roll A Lisp In C - Procedures



lambda-calculus.jpg

Procedures provide a way of abstracting imperative knowledge that can be represented in a language. In this article I show a technique for implementing lexically scoped first-class closures. This is the concluding article in the Roll A Lisp In C series.

Roll A Lisp In C - Environments



env-mapping.jpg

Environments store values that can be referred to in later evaluations. In this article I show a technique for storing lisp data for use in later expressions.

Essentials of Compilation & Modern Compiler Implementation in C



tiger-book.png

This review goes over two undergraduate textbooks on compilers that have been used autodidactically. The books are shown compared to each other, in the context of their supplementary material, and in of themselves.

Roll A Lisp In C - Evaluation



eval-when.jpg

Evaluation is the process of taking an expression and producing a value. In this article I show how to take expresions held in list structured data and produce values.

Roll A Lisp In C - Reading



read-ast.jpg

Lisp is often known as one of the oldest programming languages. Indeed, it's conception can be traced back to research done by John McCarthy in 1960. In these series of articles I present an implementation of a Lisp written in the C language. These articles assume some familiarity in a Lisp like Scheme or Common Lisp.

What Is A Monad?



goldberg.gif

Monads are often a point of frustration for learners of Haskell. The question of what a monad is leads to the question of why a monad is. The question of why a monad is leads to the question of what a monad is. It's been said that the IO monad is special. This is wrong. It's time that these myths be debunked. This article seeks to answer the question of what a monad is.