首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免加载公共lisp项目的多个asdf文件?

如何避免加载公共lisp项目的多个asdf文件?
EN

Stack Overflow用户
提问于 2012-11-18 05:04:19
回答 1查看 1.2K关注 0票数 5

在阅读Peter的“实用Common”一书时,我很难理解如何与Emacs的黏液和quicklisp一起处理Common包系统。他提供的项目结构如下:

  • spam.lisp在包com.gigamonkeys.spam中,它依赖于另外两个包,cl-ppcrecom.gigamonkeys.pathnames
  • 包中的pathnames.lisp com.gigamonkeys.pathnames
  • spam.asd,它描述com.gigamonkeys.spam包的依赖关系。
  • pathnames.asd,它描述com.gigamonkeys.pathnames包的依赖关系。

我目前找到的构建最终目标spam.lisp的唯一方法是:

  1. 使用SLIME ( pathnames.asd )编译和加载pathnames.asd文件
  2. 通过在REPL上键入com.gigamonkeys.pathname来加载(asdf:operate 'asdf:load-op 'spam)
  3. 通过在REPL上键入cl-ppcre来加载(ql:quickload "cl-ppcre")
  4. 使用SLIME编译和加载spam.asd文件
  5. 通过在REPL上键入com.gigamonkeys.spam来加载(asdf:operate 'asdf:load-op 'spam)

这似乎是使用单个文件(spam.lisp)中定义的函数所需的大量工作--我肯定做错了什么。有什么方法可以用较少的命令来加载spam.lisp并递归地加载它的依赖项吗?

EN

回答 1

Stack Overflow用户

发布于 2012-11-18 09:04:46

一些术语:

  • http://www.lispworks.com/documentation/HyperSpec/Body/11_.htm是一个通用的Lisp标准特性。包是符号的命名空间。没别的了。它不是一个文件,不是一个模块,也不是一个库,也不是任何这样的东西。它甚至不是函数、变量或类的名称空间。只是为了象征。有一种惯例是将设置包的定义放入自己的文件中。但那只是个惯例。
  • 系统用于定义、加载和编译组成软件库或应用程序的所有文件。体制的观念是古老的(三十多年)。ASDF (另一个系统定义工具)是该思想的一个流行和免费的实现。1984年,肯特·皮特曼( Kent )写了关于大系统的描述的文章。

这类系统设施的一部分是一个登记册,在那里可以找到所有系统。系统定义描述它所包含的文件以及它所依赖的所有系统。通常,这样的注册表是文件系统和/或注册表(变量,.)中的目录。在跑步的李斯特里。

在加载特定系统时,系统工具将查找注册表,加载定义,递归加载所有需要的系统,然后加载所有文件。

参见ASDF手册:配置ASDF以查找您的系统

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13437669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档