Show HN: A Lisp where each function call runs a Docker container

Published: (February 18, 2026 at 11:19 PM EST)
2 min read

Source: Hacker News

Docker Lisp

A Docker image is a piece of executable code that produces some output given some input.

Screenshot of a program trace, docker events, and docker stats

Requirements

  • Docker

Setup

  1. Build the base images and built‑ins:

    ./scripts/build-base
    ./scripts/build-builtins
  2. Run the tests (be patient):

    ./scripts/run-tests

Usage

Evaluate an expression

./scripts/run eval "(cons 1 2)"

Trace evaluation

./scripts/run --trace eval "(car (cdr (cons 1 (cons 2 (list)))))"

You can also monitor the evaluation with docker stats and docker events.

Write and run a program

Create a Dockerfile that starts from docker-lisp/eval and supplies the program as the command, e.g.:

FROM docker-lisp/eval
CMD ["(define fact (lambda (n) (if (number-equals n 0) 1 (multiply n (fact (subtract n 1))))))", "(fact 3)"]

Build the program:

./scripts/build  [name]

If name is omitted, the filename is used.

Run the built program:

./scripts/run 

Scripts

ScriptPurpose
build [name]Build a Dockerfile into docker-lisp/. Defaults to the file’s basename.
build-baseBuild base images (docker-lisp/base-racket, docker-lisp/base-call).
build-builtinsBuild all builtin images.
run [--trace] [--no-cleanup] [args]Run a docker-lisp/ container.
run-tests [--no-trace] [--rebuild-base] [prefix filter]Run the test suite (traces enabled by default).
cleanKill all docker-lisp/* containers and remove all built docker-lisp/* images.
0 views
Back to Blog

Related posts

Read more »

Local Centralized Database Manager

Overview A local database portal that runs with Docker Compose, providing a single interface for common database operations across multiple database engines. G...