Show HN: 一种每个函数调用都会运行 Docker 容器的 Lisp

发布: (2026年2月19日 GMT+8 12:19)
2 分钟阅读

Source: Hacker News

Docker Lisp

Docker 镜像是一段可执行代码,能够在给定输入时产生相应输出。

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

要求

  • Docker

设置

  1. 构建基础镜像和内置镜像:

    ./scripts/build-base
    ./scripts/build-builtins
  2. 运行测试(请耐心等待):

    ./scripts/run-tests

使用方法

求值表达式

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

跟踪求值过程

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

你也可以使用 docker statsdocker events 来监控求值过程。

编写并运行程序

创建一个以 docker-lisp/eval 为基础镜像并将程序作为命令提供的 Dockerfile,例如:

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

构建程序:

./scripts/build  [name]

如果省略 name,将使用文件名。

运行已构建的程序:

./scripts/run 

脚本

脚本用途
build [name]将 Dockerfile 构建到 docker-lisp/ 中。默认使用文件的基名。
build-base构建基础镜像(docker-lisp/base-racketdocker-lisp/base-call)。
build-builtins构建所有内置镜像。
run [--trace] [--no-cleanup] [args]运行 docker-lisp/ 容器。
run-tests [--no-trace] [--rebuild-base] [prefix filter]运行测试套件(默认启用跟踪)。
clean终止所有 docker-lisp/* 容器并删除所有已构建的 docker-lisp/* 镜像。
0 浏览
Back to Blog

相关文章

阅读更多 »

本地集中式数据库管理器

概述 本地数据库门户,使用 Docker Compose 运行,提供一个统一界面,以在多个数据库引擎上执行常见的数据库操作。G...