我想学习和使用SBCL,因为它易于学习和速度。(3 年前我一直在玩 Lisp,现在正在刷新它。)但是我怎样才能了解标准库中包含的内容,这样我就不会重新实现一些东西呢?
在 Python 之后,这就像一场噩梦:SBCL 网站上的手册只涵盖了软件,没有关于标准库的任何内容。(相比之下,Gnu Common Lisp 的网站只有源代码和二进制文件。)
首先:这个问题并不是真正的 SBCL 特定的。CL 库是标准化的,因此您可以使用任何 lisp 的文档。
如前所述,CL HyperSpec非常有用。然而,它是一个参考,因此在我看来不太适合学习。
对于学习,那里有各种书籍。我个人非常喜欢这些:
您还应该查看现有代码。我特别喜欢阅读 Edi Weitz 的任何库,但我从不同的来源展开阅读,以了解其他人如何使用 Lisp 及其庞大的库来解决问题。
如果你能花那么多时间,你甚至可以登录 IRC(#lisp
频道)并在那里提问。或者发布你写过的代码,comp.lang.lisp
并通过直接反馈来征求批评意见。
有关Common Lisp中包含的内容的文档,请参阅Common Lisp HyperSpec
此外,如果您正在学习 lisp,请考虑使用 CLISP 而不是 SBCL。CLISP 有(恕我直言)一个更直观的调试器。对于任何非生产的东西,大多数 Common Lisp 实现之间的差异可以忽略不计。
如果您在 Windows 上进行开发,CLHS (Common Lisp HyperSpec) 和CLtL2 (Common Lisp the Language, 2nd Edition) 可以作为 CHM 帮助文件使用,这使得查找 CL 标准库函数变得更加容易。我发现它比使用(在线或离线)HTML 版本更快。
CHM 文件可能来自多个来源。一个方便的下载是:
http://www.daansystems.com/lispide/
(它们与 LispIDE 包捆绑在一起。)