我在几个 Lisp 源文件中开发了一些 Common Lisp 函数,我希望这些函数可以轻松地供我编写的其他函数使用,或者如果我认为它们对其他人有用的话,可以在 github 上提供。现在,我只是将它们放在一些预定义的文件夹中并使用(require "/path/to/my/modules/module.lisp")
.
我想了解定义 Lisp 模块库的正确(规范 Lisp)方法是什么。问题的第二部分是如何使用它们(我是否定义了它们,或者我是否从其他人那里获得了它们)。
我读了很多关于defpackage
and defsystem
and asdf
。但我读到的所有内容似乎都集中在这项任务的某些特定角落。我在了解自定义模块创建、部署和使用的总体情况时遇到了很多困难。因此,假设我面前有 Lisp 环境(CLISP 或 SBCL)以及一个或多个.lisp
我想要制作一个包或库的文件,是否有文档解释了执行此操作所需的步骤?这可能是我已经读过的东西,但由于不理解上下文而没有跟踪。我读到的有关 ASDF 的内容似乎在功能上就是我所追求的,但我不明白 ASDF 是否是我唯一的选择,或者它是否只是碰巧是一个de facto标准以及大多数其他人使用的东西,或者其他什么。我在 SBCL 中玩了一下,不确定我是否正确使用它,也没有看到有关如何在 CLISP 中设置它的信息。所以我想了解完成这项任务的中间、普通方法是什么。
我知道这是一大堆草率的子问题。再说一次,如果有一些好的参考资料可供参考,我可以阅读。我只是在全面了解它应该如何工作,以及是否有任何“最佳”方法,或者在 Lisp 中是否有点像“狂野西部”选择库时遇到了一些麻烦-经理-你喜欢这种方法。我用谷歌搜索并阅读了任何看起来相关的内容,但我的大脑因所有这些而旋转。
Thanks.
A system是文件和子系统的集合。可以编译或加载这样一个system。还可以进行其他操作。它跟踪依赖关系并尝试做最少的工作。
如果您使用 SBCL 和 CLISP,那么ASDF是要选择的工具。看http://www.cliki.net/asdf http://www.cliki.net/asdf
ASDF除其他外,还提供DEFSYSTEM
宏来描述此类系统。
不要使用PROVIDE
/ REQUIRE
- 除非你知道自己在做什么。ASDF是要走的路。
要发布您的代码并使其易于被其他人加载,然后使用快速显示. See: http://www.quicklisp.org/beta/ http://www.quicklisp.org/beta/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)