<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tiny Interpreters</title><description>Learn how programming languages work, one tiny interpreter at a time.</description><link>https://blog.tinyinterpreters.dev/</link><item><title>Recursion without Recursive Bindings</title><link>https://blog.tinyinterpreters.dev/posts/recursion-without-recursive-bindings/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/recursion-without-recursive-bindings/</guid><description>Learn how to express recursion in FUN even though it lacks recursive bindings.</description><pubDate>Mon, 12 Oct 2026 06:20:00 GMT</pubDate></item><item><title>FUN: Making Curried Functions Work in the Presence of Free Variables</title><link>https://blog.tinyinterpreters.dev/posts/fun-currying-free-variables/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/fun-currying-free-variables/</guid><description>Fix a subtle problem with currying and free variables by changing what FUN stores in a function value, uncovering closures along the way.</description><pubDate>Mon, 28 Sep 2026 03:30:00 GMT</pubDate></item><item><title>FUN: First-Class Functions, Currying, and a Surprise</title><link>https://blog.tinyinterpreters.dev/posts/fun-first-class-functions/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/fun-first-class-functions/</guid><description>Extend LET with first-class functions, then use currying and partial application to uncover an unexpected consequence of how function calls are evaluated.</description><pubDate>Mon, 21 Sep 2026 14:30:00 GMT</pubDate></item><item><title>LETDEP: Dependency-Ordered Binding Semantics for let Expressions</title><link>https://blog.tinyinterpreters.dev/posts/letdep/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/letdep/</guid><description>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.</description><pubDate>Fri, 11 Sep 2026 09:00:00 GMT</pubDate></item><item><title>LETSEQ: Sequential Binding Semantics for let Expressions</title><link>https://blog.tinyinterpreters.dev/posts/letseq/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/letseq/</guid><description>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.</description><pubDate>Thu, 10 Sep 2026 09:00:00 GMT</pubDate></item><item><title>LETPAR: Parallel Binding Semantics for let Expressions</title><link>https://blog.tinyinterpreters.dev/posts/letpar/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/letpar/</guid><description>LETPAR gives multiple-binding let expressions parallel binding semantics: every initializer is evaluated in the incoming environment, so sibling bindings cannot see one another.</description><pubDate>Wed, 09 Sep 2026 09:00:00 GMT</pubDate></item><item><title>Multiple-Binding let Expressions - Syntax Before Semantics</title><link>https://blog.tinyinterpreters.dev/posts/multiple-binding-let-expressions/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/multiple-binding-let-expressions/</guid><description>Extend LET so a single let expression can contain multiple bindings, updating the grammar, AST, and parser before deciding what those bindings mean.</description><pubDate>Tue, 08 Sep 2026 09:00:00 GMT</pubDate></item><item><title>LET: Introducing Local Bindings and Scope</title><link>https://blog.tinyinterpreters.dev/posts/let/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/let/</guid><description>LET extends VAR with let expressions, allowing programs to introduce local bindings and showing how environments determine their scope and support shadowing.</description><pubDate>Mon, 07 Sep 2026 12:30:00 GMT</pubDate></item><item><title>VAR: Variables and Environments</title><link>https://blog.tinyinterpreters.dev/posts/var/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/var/</guid><description>VAR extends IF with variable expressions and environments, making evaluation depend on context as variable names are looked up in the current environment.</description><pubDate>Mon, 31 Aug 2026 11:55:00 GMT</pubDate></item><item><title>IF: Conditional Expressions and Selective Evaluation</title><link>https://blog.tinyinterpreters.dev/posts/if/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/if/</guid><description>IF extends ZERO with conditional expressions, using Boolean conditions to choose which of two branches to evaluate while leaving the other unevaluated.</description><pubDate>Mon, 24 Aug 2026 06:40:00 GMT</pubDate></item><item><title>Make it a Syntax Error</title><link>https://blog.tinyinterpreters.dev/posts/make-it-a-syntax-error/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/make-it-a-syntax-error/</guid><description>See how grammar and AST design in a tiny Elm interpreter can turn runtime type errors into syntax errors, simplify evaluation, and connect to GADTs.</description><pubDate>Thu, 20 Aug 2026 12:00:00 GMT</pubDate></item><item><title>ZERO: Boolean Values and Runtime Type Errors</title><link>https://blog.tinyinterpreters.dev/posts/zero/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/zero/</guid><description>ZERO extends DIFF with the zero? predicate and Boolean values, then introduces runtime type errors for expressions that use values of the wrong type.</description><pubDate>Mon, 17 Aug 2026 07:40:00 GMT</pubDate></item><item><title>Simplifying Whitespace with Lexeme Parsers in Elm</title><link>https://blog.tinyinterpreters.dev/posts/lexeme-parsers-in-elm/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/lexeme-parsers-in-elm/</guid><description>Learn how lexeme parsers simplify whitespace handling in elm/parser by consuming trailing whitespace and keeping parsers close to the grammar.</description><pubDate>Fri, 14 Aug 2026 11:50:00 GMT</pubDate></item><item><title>Why Recursive Elm Parsers Need Parser.lazy</title><link>https://blog.tinyinterpreters.dev/posts/why-recursive-elm-parsers-need-parser-lazy/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/why-recursive-elm-parsers-need-parser-lazy/</guid><description>Learn why recursive Elm parsers create cyclic definitions, how Parser.lazy breaks the cycle, and when recursive parsers do and don&apos;t need it.</description><pubDate>Wed, 12 Aug 2026 12:50:00 GMT</pubDate></item><item><title>DIFF: When Expressions Contain Expressions</title><link>https://blog.tinyinterpreters.dev/posts/diff/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/diff/</guid><description>DIFF extends CONST with difference expressions whose operands are themselves expressions, revealing the same recursive structure in the grammar, AST, parser, and evaluator.</description><pubDate>Mon, 10 Aug 2026 09:00:00 GMT</pubDate></item><item><title>Setting Up a Reproducible Elm Interpreter Project with Nix</title><link>https://blog.tinyinterpreters.dev/posts/setting-up-a-reproducible-elm-interpreter-project-with-nix/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/setting-up-a-reproducible-elm-interpreter-project-with-nix/</guid><description>Set up a reproducible Elm interpreter project with a Nix flake, Elm tooling, helper commands, source and test structure, and grammar documentation.</description><pubDate>Thu, 06 Aug 2026 08:50:00 GMT</pubDate></item><item><title>Testing an Elm Interpreter with elm-test</title><link>https://blog.tinyinterpreters.dev/posts/testing-an-elm-interpreter-with-elm-test/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/testing-an-elm-interpreter-with-elm-test/</guid><description>Learn how to test an Elm interpreter with elm-test at the lexer, parser, and interpreter boundaries, then extract a reusable testValue helper.</description><pubDate>Tue, 04 Aug 2026 07:50:00 GMT</pubDate></item><item><title>CONST: From Source Text to Value</title><link>https://blog.tinyinterpreters.dev/posts/const/</link><guid isPermaLink="true">https://blog.tinyinterpreters.dev/posts/const/</guid><description>CONST is a tiny Elm interpreter for non-negative integer constants, showing the path from source text through an AST to an evaluated value.</description><pubDate>Mon, 03 Aug 2026 05:00:00 GMT</pubDate></item></channel></rss>