• ## How to write a Lisp evaluator in Haskell

I promised my students last semster that I’d show how to write (some of) a Lisp in Haskell, in order to demonstrate the usefulness of algebraic data types for prototyping structured applications – and also for fun, obviously. Source code for everything in this post can be found here.

This short tutorial is targeted at Haskell beginners, and doesn’t even use a single monad, unlike more popular and full-featured tutorials like write yourself a scheme and write you a haskell. I achieve brevity and simplicity in the following way:

• Only implementing the “EPL” part of the REPL, because parsing is Boring.

• Not implementing macros.

• Cutting lots of corners.

Ready? Let’s begin.

[Read more...]
• ## Elementary constructive analysis in Haskell

What is a number?

The question is deceptively simple, but your answer – and seriously, do try to answer it – has important implications for how you think about mathematics. For example, an archetypal constructive mathematician would argue that there are two kinds of numbers: those that can be finitely constructed, and those that can be approximated arbitrarily well (and, moreover, nothing else!).

In this post we’ll see how such a mathematician would define different sets of numbers, and formalize all of them with Haskell’s beautiful algebraic data types.

[Read more...]
• ## A taste of distributed computing

The following is a transcript of a talk I gave at the 2016 UTG Lightning Talks at U of T, along with some references and notes. Leave clarifying questions in the comments section!

[Read more...]
• ## Python-flavored Lisp

I mentioned in lab this week that a sufficiently crazy person could write a programming language with Lisp semantics and Python syntax. I found this idea useful when I was learning, so I want to expand upon it here by making a rudimentary evaluator for such a language. But let’s first explore the premise.

[Read more...]

subscribe via RSS