在Common Lisp中,quicklisp是一种stream行的图书pipe理工具。 我打算使用这个工具,我将尝试使用CL-WHO。 我使用SBCL 1.0.57实现。 我将在下面回答我自己的问题。
作为一个初学者,目前还不清楚ASDF和quicklisp是如何协同工作的。 因此,不清楚如何真正使用通过quicklisp在外部源文件中下载的软件包或库。 至less在这个时候,quicklisp常见问题解答不起作用。 在Python中,它非常简单:你可以把“导入一些模块”,生活很好。 CL + quicklisp是否有相应的版本?
如果你search,你会发现很多结果。 以下是我find的一些最相关的:
Lisp导入/加载文件
为什么在64位Ubuntu上不安装32位.deb软件包?
包和Rpath和安装错误
在Windows / Linux中为Mac创build软件包
教程/指南在软件包中创build经典的小型Linux应用程序(Debian)
如何使用quicklisp安装的软件包?
当我正在阅读这些内容时,至less有一个问题想到:如果我使用quicklisp,我真的不得不关心ASDF吗? Quicklisp似乎是一个更高层次的pipe理工具。 其他人build议使用quickproject。 但这真的有必要吗?
如何让R使用所有的处理器?
在Ubuntu上安装python模块
如何让virtualenv在Ubuntu上使用dist-packages?
Kivy – 在Windows上创build软件包
dpkg删除来停止进程
与Python进口类比是系统定义…呃,这是一个非常宽松的类比,但是,这是一条路要走。 您在系统定义中声明了依赖关系,然后在源代码中声明您希望它在那里,这样如果以后再引用外部代码的位,就可以这样做。
例如。 在系统定义中你可能会有:( 通常它会在my-program.asd文件中)
(defsystem :my-program :version "0.0.1" :serial t :description "My program" :components ((:file "some-source-file")) ;; `some-external-package' here is the "import",ie here you ;; declared that you will be using code from this package. ;; ASDF will generally "kNow" how to get the code of that package ;; from here on. But if it doesn't,then there are ways to "help it" ;; similar to how in Python there's a procedure to prepare your local ;; files to be used by easy_install :depends-on (:some-external-package))
稍后在你的代码中,你可以假定你的程序可以使用some-external-package ,例如:
(some-external-package:exported-symbol)
应该只是工作。 (“你的代码”是some-source-file.lisp,你已经在组件中指定了)。
这是关于如何定义系统的ASDF 文档
在ASDF可能找到它的地方有这个文件后,假设你已经安装了ASDF(你的Lisp可用,SBCL与它捆绑在一起),你可以使用(asdf:load-system :my-program) 在这里解释。
(push "/path/to/your/system/deFinition/" asdf:*central-registry*)
通过quicklisp页面上的说明下载cl-who并运行以下命令:
#!/usr/bin/sbcl --script (load "~/quicklisp/setup.lisp") (ql:quickload "asdf") (asdf:load-system 'cl-who) (with-open-file (*standard-output* "out.html" :direction :output) (cl-who:with-html-output (*standard-output* nil :indent t) (:html (:head (:title "Test page")) (:body (:p "CL-WHO is really easy to use")))))
对于初学者或者非常懒惰的人来说,没有必要在顶部写3行,而不是只写一行(就像在Python中)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。