如何使用 Common Lisp (Clozure CL) 库?

How can I use a Common Lisp (Clozure CL) Library?

我正在 Mac 上学习 Common Lisp (Clozure CL),想创建一个简单的 GUI。我已经从 CLiki 下载了 "ltk" 库并将其放入根级别的项目目录中(我假设我必须这样做,因为我找不到初学者的说明)。

"LTK - a Lisp binding to the Tk toolkit" 文档的第 4 页指出,在使用 (load "ltk") 加载库之前,应使用 (compile-file "ltk") 编译库。但是,我收到此错误消息:

Error: File #P"/Users/myName/Desktop/lisp_experiments/GUI_EXAMPLE/ltk" not found While executing: CCL::FCOMP-FIND-FILE, in process Listener(4). Type cmd-. to abort, cmd-\ for a list of available restarts. Type :? for other options.

我也使用了完整的文件路径名,但得到了同样的错误。

我做错了什么?

感谢您的帮助。

马克

ps - 网上几乎没有关于这类东西的菜鸟教程,可以让用户一步步完成整个过程。

I have downloaded the "ltk" library from CLiki and put it into the project directory at the root level.

如今,很少需要执行此步骤,因为可以使用 Quicklisp (see also this gif) 轻松访问库。 基本上,您应该能够安装 Quicklisp 和 运行 以下内容:

(ql:quickload "ltk")

以上下载、编译和安装 Lisp 库,但不一定是所需的 C 库,您可能需要单独安装。如果以上工作没有问题,那么以下也应该工作:

(ltk:ltktest)

Quicklisp 依赖于用 ASDF (Another System Definition Facility). The best practices 文档描述的 Lisp 系统,阅读起来也很有趣。

在 LTK 的情况下,您可以看到 ltk.asd 只指定了一个组件,ltk.lisp。当您安装名为 "LTK" 的 system 时,quicklisp 将完成所有必要的工作来安装其依赖项,然后编译并加载 ltk.lisp,如手册中所述。

不清楚的是为什么您的显式 compile-file 失败了。

我在我的机器上找到了 ltk.lisp 文件;它的路径名看起来像:

#P"/home/user/quicklisp/dists/quicklisp/software/ltk-20150113-http/ltk.lisp"

果然,使用该路径名调用 compile-file 有效,并且 returns 另一个以 .fasl 结尾的路径名(对象格式)。加载返回的路径名加载库。请提供有关错误的更多信息,以便我们帮助您调试此问题。