Learn How Programming Languages Work
RSS FeedLearn how programming languages work by building tiny interpreters that are small enough to understand as a whole and focused enough to make one language idea concrete. Elm is the current implementation language.
Recent Posts
Recursion without Recursive Bindings
Learn how to express recursion in FUN even though it lacks recursive bindings.
FUN: Making Curried Functions Work in the Presence of Free Variables
Fix a subtle problem with currying and free variables by changing what FUN stores in a function value, uncovering closures along the way.
FUN: First-Class Functions, Currying, and a Surprise
Extend LET with first-class functions, then use currying and partial application to uncover an unexpected consequence of how function calls are evaluated.
LETDEP: Dependency-Ordered Binding Semantics for let Expressions
LETDEP gives multiple-binding let expressions dependency-ordered binding semantics: initializer dependencies determine the evaluation order, allowing forward references while rejecting duplicate names and cyclic bindings.
LETSEQ: Sequential Binding Semantics for let Expressions
LETSEQ gives multiple-binding let expressions sequential binding semantics: bindings are evaluated in source order, with each new binding becoming available to the ones that follow it.