Learn How Programming Languages Work
RSS FeedBuild tiny interpreters, one language feature at a time. Each interpreter makes part of language design and implementation concrete, using Elm as the current implementation language.
Recent Posts
LETDEP: Dependency-Ordered Binding Semantics for let Expressions
Define LETDEP precisely, resolve forward references with dependency analysis and topological sorting, and explore the lexical-scope edge cases that make it interesting.
LETSEQ: Sequential Binding Semantics for let Expressions
Define LETSEQ precisely, implement sequential binding semantics in Elm, test the interesting edge cases, and compare similar forms in Racket and Clojure.
LETPAR: Parallel Binding Semantics for let Expressions
Define LETPAR precisely, implement parallel binding semantics in Elm, test the interesting edge cases, and compare similar forms in Racket and OCaml.
Multiple-Binding let Expressions - Syntax Before Semantics
Extend a tiny Elm interpreter with multiple-binding let expressions, then explore the semantic choices that lead to parallel and sequential bindings.
LET: Adding Local Bindings to a Tiny Interpreter in Elm
Add let expressions to a tiny interpreter in Elm and explore local bindings, scope, variable shadowing, and evaluation order through examples and tests.