跳转到正文

Lisp 家族 总览 ​

Lisp 不是一种单独的语言,而是一条以 S-expression 为共同外形、以“代码即数据”为核心思想的语言谱系。本分卷并列介绍 Common Lisp、Scheme、Clojure 与 Racket:它们共享列表、符号、Reader、Evaluator、REPL 和宏,却在对象系统、不可变数据、运行时与语言扩展方式上走出了不同路线。

一段表达式的旅程 ​

lisp
(mapcar (lambda (value) (* value value)) '(1 2 3))

Reader 先把文本读成列表和符号组成的数据,Evaluator 再按照当前语言的求值规则执行它。宏介于两者之间:接收语法数据并生成新语法。这种同像性让 Lisp 特别适合 DSL、编译器、程序变换和交互式探索。

四条学习路线 ​

方言重点运行基线
Common LispANSI 标准、CLOS、Condition/Restart、PackageSBCL 2.6.8
Scheme最小核心、正确尾调用、卫生宏GNU Guile 3.0.11
Clojure持久化集合、Sequence、并发引用、JVMClojure 1.12.5
Racket#lang、Contract、Syntax Object、语言导向编程Racket 9.3

先读基础语法,再通过数据结构与算法横向比较同一任务。标准、方言和实现版本的关系见版本与方言路线。

适用边界 ​

本卷比较多个 Lisp 方言;Reader、宏、模块和运行实现不同,不能把 Common Lisp、Scheme、Clojure、Racket 的代码混用。

实验入口与范围 ​

本产品没有统一的浏览器运行时;请从基础语法选择本卷介绍的方言与解释器,在本机运行数据结构和算法示例。 Docker 验证证据展示已有采集结果与缺口。

Released under the MIT License.