如何快速开始 Lisp Koans:10分钟入门 Common Lisp 学习之旅
Lisp Koans 是一个基于测试驱动的 Common Lisp 学习项目,通过渐进式的单元测试引导学习者掌握 Lisp 语言特性。本文将带你在10分钟内完成环境搭建并开始第一个 Lisp 练习,让你轻松踏上 Common Lisp 启蒙之旅。
📋 准备工作:安装必要工具
开始前需要准备两个核心工具:
- Common Lisp 解释器:推荐使用 SBCL(Steel Bank Common Lisp)或 CCL(Clozure Common Lisp)
- Git:用于克隆项目代码库
在 Ubuntu/Debian 系统中可通过以下命令安装 SBCL:
sudo apt-get install sbcl git
🔄 一键获取项目代码
打开终端,执行以下命令克隆 Lisp Koans 项目:
git clone https://gitcode.com/gh_mirrors/li/lisp-koans
cd lisp-koans
项目结构清晰包含两个核心目录:
koans/:存放未完成的练习文件(如 koans/asserts.lisp)koans-solved/:提供已完成的参考解答
🚀 启动你的第一次冥想
Lisp Koans 采用"冥想"(meditate)模式进行学习,通过以下简单步骤开始:
单次运行模式
直接执行核心文件 contemplate.lisp:
sbcl --script contemplate.lisp
首次运行会看到类似以下输出:
Thinking about ASSERTS
FILL-IN-THE-BLANKS requires more meditation.
You have not yet reached enlightenment.
A koan is incomplete.
Please meditate on the following code:
File "koans/asserts.lisp"
Koan "FILL-IN-THE-BLANKS"
Current koan assert status is "(INCOMPLETE INCOMPLETE INCOMPLETE)"
You are now 0/198 koans and 0/31 lessons closer to reaching enlightenment.
自动监控模式(推荐)
对于持续学习,推荐使用系统监控脚本,当文件修改时自动重新运行测试:
# Linux系统
sh meditate-linux.sh sbcl
# MacOS系统
sh meditate-macos.sh sbcl
✏️ 完成第一个 Koan 练习
打开 koans/asserts.lisp 文件,找到第一个练习:
(define-test fill-in-the-blanks
(assert-equal ____ 2)
(assert-equal ____ 3.14)
(assert-equal ____ "Hello World"))
将 ____ 替换为正确答案:
(define-test fill-in-the-blanks
(assert-equal 2 2)
(assert-equal 3.14 3.14)
(assert-equal "Hello World" "Hello World"))
保存文件后,监控脚本会自动重新运行,此时你将看到:
You have reached partial enlightenment.
You are now 1/198 koans and 1/31 lessons closer to reaching enlightenment.
🧩 学习路径与内容概览
Lisp Koans 包含31个主题模块,循序渐进覆盖 Common Lisp 核心特性:
- 基础语法:从 koans/asserts.lisp 开始,掌握断言和基本数据类型
- 函数与变量:通过 koans/functions.lisp 和 koans/variables-parameters-constants.lisp 学习函数定义与作用域
- 数据结构:列表(koans/lists.lisp)、数组(koans/arrays.lisp)和哈希表(koans/hash-tables.lisp)
- 高级特性:宏(koans/macros.lisp)、面向对象(koans/clos.lisp)和并发(koans/threads.lisp)
每个模块设计为独立单元,建议按顺序学习,每天完成1-2个模块即可稳步前进。
💡 实用学习技巧
- 交互式学习:将代码片段复制到 Lisp REPL 中测试,使用
sbcl命令启动交互式环境 - 对比解答:遇到困难时可参考
koans-solved/目录下的完成版本 - 循序渐进:每个 Koan 只专注一个概念,确保完全理解后再进入下一个
- 利用错误信息:运行时的错误提示会明确指出需要修改的文件和位置
🎯 常见问题解决
- 缺少依赖:线程模块需要 Quicklisp 支持,可参考 koans/threads.lisp 中的安装说明
- 解释器兼容性:项目支持多种 Lisp 解释器,包括 ABCL、CCL、CLISP、ECL 和 SBCL
- 脚本权限问题:若执行
meditate-*.sh提示权限不足,运行chmod +x meditate-*.sh赋予执行权限
通过 Lisp Koans 的引导,你将以实践方式逐步掌握 Common Lisp 的精髓。每解决一个 Koan,不仅是修复代码,更是对函数式编程思维的一次深化。现在就开始你的 Lisp 启蒙之旅吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



