Skip to content

LISP - 环境

设置现代 Common Lisp 环境比以往任何时候都容易。Lisp 开发的关键在于其交互性,以 REPL(读取-求值-打印循环)为中心。本指南着重介绍构建强大且高效开发环境的当前最佳实践。

Lisp 实现是指 Lisp 编译器和运行时。目前最流行的选择是:

  • Steel Bank Common Lisp (SBCL):一个高性能、开源的编译器,是新项目的实际标准(de-facto standard)。它提供强大的类型检查并生成快速的原生代码。
  • Clozure Common Lisp (CCL):另一个优秀、快速的实现,以其快速编译时间以及对 macOS、Linux 和 Windows 的良好支持而闻名。
  • Embeddable Common Lisp (ECL):适用于将 Lisp 嵌入 C/C++ 应用程序或构建独立可执行文件。

我们建议从 SBCL 开始。

安装和管理 Lisp 实现最简单的方法是使用版本管理器或系统包管理器。

Roswell 是一个 Lisp 安装/管理工具,类似于 Node.js 的 nvm 或 Python 的 pyenv。它简化了实现安装、脚本管理和快速上手。请查看 Roswell 官方 GitHub 页面获取安装说明。

# 安装 Roswell 后,安装 SBCL
ros install sbcl-bin
# 设置为默认
ros use sbcl-bin
# macOS (使用 Homebrew)
brew install sbcl
# Debian/Ubuntu
sudo apt-get install sbcl
# Arch Linux
sudo pacman -S sbcl

3. 配置编辑器以进行交互式开发

Section titled “3. 配置编辑器以进行交互式开发”

虽然可以在纯文本编辑器中编写 Lisp 代码,但其真正的强大之处在于与正在运行的 Lisp 进程集成的编辑器。

  • Emacs + SLIME 或 SLY:这是传统的黄金标准。SLIME (Superior Lisp Interaction Mode for Emacs) 及其继任者 SLY 提供深度集成,允许你在编辑器中连接到实时 Lisp REPL,并从中编译函数、检查对象和调试代码。
  • Visual Studio Code + Alive:一个出色的现代替代方案。Alive 扩展在流行的 VS Code 编辑器中提供了丰富、类似 SLIME 的交互式体验,使 Lisp 对新手非常友好。

让我们启动一个 REPL 并运行一些代码。打开你的终端并输入 sbcl。

$ sbcl
This is SBCL ...
* ; 星号是 REPL 提示符

现在,你可以输入 Lisp 表达式,REPL 将对其进行求值并打印结果。

* (+ 2 2)
4
* (format t "Hello, Lisp World!~%")
Hello, Lisp World!
NIL

创建一个名为 hello.lisp 的文件:

;;; hello.lisp
(defun hello ()
(format t "Hello from a file!~%"))
(format t "File loaded.~%")

现在,将此文件加载到你正在运行的 REPL 中:

* (load "hello.lisp")
File loaded.
T
* (hello)
Hello from a file!
NIL
* ; 要退出 REPL,请键入 (quit) 或按 Ctrl+D
* (quit)

Quicklisp 是 Common Lisp 必不可少的库管理器。它允许你通过一条命令下载、安装和管理数千个开源库。请遵循 Quicklisp 官方网站上的安装说明。安装后,你可以像这样加载一个库:

* (ql:quickload :drakma) ; 加载 Drakma HTTP 客户端库