Welcome & Introduction

July 12, 2015 • Alex Leighton

Welcome

On this blog you will find posts that discuss the project. I will be detailing the design choices, highlighting interesting code, and generally helping anyone interested in the Lambda Calculus understand the language and how to write an interpreter for it.

We’ll be starting from scratch with this project. Partly to satisfy anyone’s curiosity about all of the pieces, and partly because I detest the Java package managers I’ve run across. So, all bets are off — if we need it, we’ll build it.

Here are the things I’m taking for granted:

Program Dependencies

Make

I am using the old-as-the-hills Make for coordinating the building, testing, and cleaning of the project. Yes, I agree, there are better build tools out there. However, I think Make wins for simplicity and ubiquity. Not using a Java package manager means that all code will be in source rather than compiled format, so linking dependencies together can be left to javac.

Java 8

I am using the newest version of Java and the JDK because I want to get more familiar with the new semantics and libraries in Java 8 (yay first-class functions!). My other motivation for using Java is to show what it looks like to implement a functional language (the Lambda Calculus) in an imperative language. Often you’ll see folks implement a toy functional language in another functional language. Some people find this to be cheating in a way, as certain functional languages (OCaml, Haskell) seem better suited to constructing compilers and interpreters.