GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • tinyinterpreters
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles

This view

  • Original page
  • New address

GeezerVison is showing github.com — Tiny Interpreters

README.md

Tiny Interpreters

Learn how programming languages work, one tiny interpreter at a time.

Hi, I'm Dwayne, and this is where you'll find the interpreters behind Tiny Interpreters. Each one is a small, complete interpreter written in Elm that grows out of the one before it. If you read them in order you get to watch a language take shape one idea at a time.

Explore the interpreters

The journey begins with CONST, an interpreter which takes a non-negative integer literal from source text to value. From there, each interpreter's description names the one it extends, so you can follow the language as it grows through the repositories.

Read the blog

Each interpreter comes with a blog post that walks through it in detail, and you'll find every post at blog.tinyinterpreters.dev.

Join the newsletter

Subscribe to hear about each new interpreter.

Pinned Loading

  1. diff diff Public

    DIFF extends CONST with difference expressions whose operands are themselves expressions, introducing recursion throughout the interpreter.

    Elm 1

  2. zero zero Public

    ZERO extends DIFF with the zero? predicate, Boolean values, and runtime type errors.

    Elm 1

  3. if if Public

    IF extends ZERO with conditional expressions, using Boolean values to choose which branch to evaluate.

    Elm 1

  4. var var Public

    VAR extends IF with variable expressions and environments, allowing programs to refer to values by name.

    Elm 1

  5. let let Public

    LET extends VAR with let expressions, allowing programs to introduce local bindings with their own scope.

    Elm 1

  6. fun fun Public

    FUN extends LET with first-class functions. Both dynamically and lexically scoped functions are explored.

    Elm 1

Repositories

Loading
Type
Language
Sort
Showing 10 of 11 repositories
  • blog Public

    Learn how programming languages work, one tiny interpreter at a time.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/blog's past year of commit activity
    Astro 0 MIT 0 0 0 Updated Nov 5, 2026
  • nix Public

    Reusable Nix development tooling for Tiny Interpreters.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/nix's past year of commit activity
    Elm 1 0 0 0 Updated Oct 29, 2026
  • fun Public

    FUN extends LET with first-class functions. Both dynamically and lexically scoped functions are explored.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/fun's past year of commit activity
    Elm 1 BSD-3-Clause 0 0 0 Updated Oct 20, 2026
  • let Public

    LET extends VAR with let expressions, allowing programs to introduce local bindings with their own scope.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/let's past year of commit activity
    Elm 1 BSD-3-Clause 0 0 0 Updated Oct 17, 2026
  • var Public

    VAR extends IF with variable expressions and environments, allowing programs to refer to values by name.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/var's past year of commit activity
    Elm 1 BSD-3-Clause 0 0 0 Updated Oct 17, 2026
  • if Public

    IF extends ZERO with conditional expressions, using Boolean values to choose which branch to evaluate.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/if's past year of commit activity
    Elm 1 BSD-3-Clause 0 0 0 Updated Oct 17, 2026
  • zero Public

    ZERO extends DIFF with the zero? predicate, Boolean values, and runtime type errors.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/zero's past year of commit activity
    Elm 1 BSD-3-Clause 0 0 0 Updated Oct 17, 2026
  • diff Public

    DIFF extends CONST with difference expressions whose operands are themselves expressions, introducing recursion throughout the interpreter.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/diff's past year of commit activity
    Elm 1 BSD-3-Clause 0 0 0 Updated Oct 17, 2026
  • const Public

    The first Tiny Interpreters interpreter. It takes a non-negative integer literal from source text to value.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/const's past year of commit activity
    Elm 2 BSD-3-Clause 0 0 0 Updated Oct 16, 2026
  • .github Public

    Our public organization profile.

    Uh oh!

    There was an error while loading. Please reload this page.

    tinyinterpreters/.github's past year of commit activity
    0 0 0 0 Updated Oct 16, 2026
View all repositories

People

@dwayne

Top languages

Loading…

Uh oh!

There was an error while loading. Please reload this page.

Most used topics

Loading…

Uh oh!

There was an error while loading. Please reload this page.

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.