🚀 启动 SBCL
SBCL,这个强大的 Common Lisp 实现,就像一个通往 Lisp 世界的传送门,让我们可以自由地探索这个充满逻辑和优雅的编程世界。那么,如何开启这段旅程呢?
从 Shell 到 Lisp
最简单的启动方式,就是打开你的终端,输入 sbcl
,然后按下回车键。就像打开一扇通往 Lisp 王国的魔法之门,你将被带到一个充满交互式命令的奇妙世界——REPL(读取-求值-打印-循环)。
$ sbcl
This is SBCL 0.8.13.60, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (+ 2 2)
4
* (exit)
$
在 REPL 中,你可以输入 Lisp 表达式,SBCL 会立即计算并返回结果。就像一个忠诚的助手,它随时准备着为你执行你的指令。
Emacs:Lisp 的最佳拍档
如果你是一位 Lisp 爱好者,Emacs 绝对是你不可或缺的伙伴。它不仅是一个强大的文本编辑器,更是一个 Lisp 的完美环境。在你的 .emacs
文件中,设置好 SBCL 的路径和参数,就可以在 Emacs 中轻松地启动 SBCL,并享受编辑、调试和运行 Lisp 代码的无缝体验。
;;; The SBCL binary and command-line arguments
(setq inferior-lisp-program "/usr/local/bin/sbcl --noinform")
Shebang 脚本:Lisp 的魔法咒语
想要让你的 Lisp 程序像其他脚本一样直接运行吗?Shebang 脚本可以实现这个愿望。在你的 Lisp 文件开头添加一行特殊的注释,就可以直接在终端中执行它,就像执行其他脚本一样。
#!/usr/local/bin/sbcl --script
(wirte-line "Hello, World!")
🚪 停止 SBCL
旅程总有结束的时候,我们也需要优雅地退出 Lisp 的世界。
退出:告别 Lisp 王国
在 REPL 中,输入 (exit)
,就像挥动魔法棒,你将回到熟悉的 Shell 环境。
文件结尾:Lisp 的自然结束
在终端中输入 Control-D
,或者当 SBCL 作为管道的一端遇到输入结尾时,它也会自动退出。
保存核心映像:Lisp 的冬眠
SBCL 可以将它的状态保存到一个文件中,就像将一个充满活力的 Lisp 世界封存起来,以便日后重新唤醒。
sb-ext:save-lisp-and-die core-file-name &key toplevel executable [函数]
错误退出:Lisp 的意外旅程
如果在运行过程中遇到错误,SBCL 会自动退出,并提供错误信息,帮助你找到问题所在。
⚙️ 命令行选项
就像魔法师的咒语,命令行选项可以赋予 SBCL 不同的能力,让它按照你的意愿运行。
运行时选项
-
--core corefilename
:保存核心映像。 -
--dynamic-space-size megabytes
:设置动态内存空间大小。 -
--control-stack-size megabytes
:设置控制堆栈大小。 -
--noinform
:禁用启动信息。 -
--disable-ldb
:禁用调试器。 -
--lose-on-corruption
:在检测到内存损坏时退出。 -
--script filename
:运行 Lisp 脚本。 -
--merge-core-pages
:合并核心页面。 -
--no-merge-core-pages
:禁用合并核心页面。 -
--default-merge-core-pages
:使用默认的合并核心页面策略。 -
--help
:显示帮助信息。 -
--version
:显示版本信息。
顶层选项
-
--sysinit filename
:指定系统初始化文件。 -
--no-sysinit
:禁用系统初始化文件。 -
--userinit filename
:指定用户初始化文件。 -
--no-userinit
:禁用用户初始化文件。 -
--eval command
:执行 Lisp 表达式。 -
--load filename
:加载 Lisp 文件。 -
--noprint
:禁用输出。 -
--disabled-debugger
:禁用调试器。 -
script filename
:运行 Lisp 脚本。
📚 初始化文件
就像一个魔法师的笔记本,初始化文件记录着 SBCL 启动时的初始设置。
系统初始化文件
默认位置:$SBCL_HOME/sbclrc
或 etc/sbclrc
。
用户初始化文件
默认位置:$HOME/.sbclrc
。
🪝 初始化和退出钩子
就像魔法师的预言和告别仪式,初始化和退出钩子在 SBCL 启动和退出时执行特定的操作。
-
sb-ext:*init-hooks*
:在系统初始化后,或者从保存的核心映像启动时,以不确定的顺序执行的函数列表。 -
sb-ext:*exit-hooks*
:在 SBCL 退出时,以不确定的顺序执行的函数列表。
总结
SBCL,就像一个通往 Lisp 世界的魔法之门,让我们可以自由地探索这个充满逻辑和优雅的编程世界。通过各种启动和停止的方式,以及灵活的命令行选项和初始化文件,我们可以定制 SBCL,使其成为我们探索 Lisp 世界的最佳伙伴。
参考文献
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于