问题标签 [asdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
54 浏览

common-lisp - 加载指定错误形式的文件,但收到错误

我正在尝试在(SBCL)Common Lisp 中编写一个小游戏,使用 Quickload 和 ASDF 来定义和管理依赖项。它使用 CLOS,所以我在projectcalledclasses中有一个目录,其中有一个文件locatable.cl.

LOCATABLE 类的defclass表单需要一个 LOCATOR 参数,所以我有一行:

但是,每当我尝试加载此文件或quickload系统时,都会收到上述错误(“必须为此类提供定位器参数”)。由于我试图定义一个系统而不是创建该类的任何实例,所以我不明白我为什么会得到这个。如果我注释掉错误行,一切都很好,但我被引导相信我拥有它的方式是需要:initval一个插槽的标准方式。

您如何定义这样的事情,以便您可以加载文件/进行系统定义而不实际发出错误信号?

这是课程 -

更新:我在 REPL 输入了表格并得到了同样的错误。出于好奇,我再次输入了两次,第一次使用:initform "",然后使用错误表单。它接受了第一种形式,并没有抱怨第二种形式,所以这个问题似乎不会在重新定义时发生。

0 投票
2 回答
150 浏览

common-lisp - ASDF 系统配置变量?

有没有办法制作一个可配置的 ASDF 系统,根据用户配置变量加载不同的 lisp 文件?如果未提供所需的配置变量,加载过程将失败并显示清晰的错误消息。加载系统时如何方便地设置这些变量?(手动,通过 quicklisp,或从另一个系统定义文件)

0 投票
1 回答
447 浏览

load - 如何使用下载的 Lisp 源代码或库(使用一种不确定的 asdf 方法)

我下载了一个 lisp 源 CC3.lisp 开始于

和别的。

我想写一个 test.lisp 来测试它的计算。

有人可能会说 ASDF,但作为一个新手,只想使用一个 lisp 文件,这似乎有点过头了,更不用说我发现与负载、包、系统、模块、ASDF、quick-lisp 的关系势不可挡。

任何提示如何编写一些脚本来让我开始。我怀疑它会涉及

  • 加载文件
  • (包装内...)

等等

但是,如果 ASDF/Quick-Lisp 是唯一的出路,也请告诉我。

谢谢。

=== 我设法在 CCL (mac os x) 下破解了这样的 asdf 工作流程:

将源文件放入 asdf 目录:

然后似乎只需要运行一次

我需要这个(但即使使用 .asd 也不知道这与 asdf 有什么关系;只需将其用作 lisp 文件并在 CCL 编辑器下执行所有操作)。

天文.asd

在 CCL 编辑器下将上述文件作为 lisp 执行后(全部执行)然后

在 CCL Listener 下执行此命令

在此之后,我可以执行一个使用这样的包的文件(在从命令行启动 Lisp 程序时如何指定包名?),但真的不知道这一切是如何工作的。

cc3-testing.lisp:

该目录现在有

我每次都必须加载 astro.ad,然后执行 asdf 命令。然后我使用 cc3-testing.lisp 来测试 cc3 系统。

那声音对吗?

0 投票
0 回答
29 浏览

common-lisp - 宏不可见的功能?

我有一个 ASDF 系统,其中包含以下代码:

当我尝试加载它时,SBCL 有时会抱怨在尝试扩展宏时函数 BAZ 未定义,但有时却没有。直接加载 testproj.lisp 时,我似乎无法重现此行为,但我想这并不能证明太多,因为否则我也无法可靠地重现它。我是否做错了什么并导致未定义的行为?这是 ASDF/SBCL 的错误吗?到底是怎么回事?:S

0 投票
2 回答
263 浏览

common-lisp - 如何将所有函数和包声明包含在名为 all.lisp 的文件中,用于 asdf 包推断系统

因此,在 package-inferred-system 扩展的第 6.5 节中的 asdf 手册/文档中,该示例使用 all.lisp 文件来确定包(我/我们将假设该文件将包含相应的所有功能和包信息子目录)。

我想知道的是在这个 all.lisp 文件中包含所有函数和包声明的“正确”方式是什么。我是否可以在 all.lisp 文件中包含该子目录的所有函数声明,然后在 asdf 文件中使用 register-system-packages 函数。或者我可以省略 all.lisp 文件,让编译器从文件中推断出包(但是我必须对添加到这个系统的每个文件都使用 register-system-packages 函数)。

我只是想知道更多关于使用这个系统的细节以及向系统添加新文件时必须做出的文件和声明。

抱歉问题不透明;我似乎无法掌握这个系统的细节

0 投票
2 回答
440 浏览

lisp - 构建大型 Lisp 应用程序

我目前正试图围绕包、系统和公司。

我现在已经阅读了包、系统、模块、库 - WTF?几次,我想我仍然很难把它做好。

如果我只是想将 Lisp 源文件拆分为两个文件,其中一个应“使用”另一个 - 我该怎么做?我需要为此建立一个系统吗?我应该使用模块吗?……?我来自 Node.js 背景,你可以简单地说

获取对文件中导出内容的引用foo.js。在 Lisp 中与此最接近的等价物是什么?

我知道ASDF用于系统,并且它被捆绑为Quicklisp的一部分,至少根据其文档:

ASDF 捆绑了所有最新版本的活动 Common Lisp 实现以及 quicklisp […]

好的,Quicklisp 是用于库的,但它们的关系是什么?Quicklisp 是不是其他语言中的“包管理器”之类的东西?如果是这样,那么 ASDF 究竟提供了什么?

很抱歉有这么多问题,但我认为它只是说明了我必须理解如何构建 Lisp 应用程序的麻烦。任何帮助将不胜感激 :-)

0 投票
2 回答
105 浏览

lisp - Quicklisp 覆盖默认系统

我有一个稍微修改过的版本,cl-json用于实现不佳的服务器解析器。当我尝试(ql:quickload :cl-json)它时,自然会加载他们存储在服务器上的文件,而不是存储在本地硬盘上的修改版本。

我考虑把它变成一个 ASDF 模块,但是我所有的源代码都有引用(json:decode...),这样就不再起作用了。

我如何告诉 quicklisp “不要从服务器下载,而是使用那里的目录”?

0 投票
1 回答
466 浏览

common-lisp - 要求 asdf 在 sbcl repl 中失败

我遇到以下错误。有什么线索吗?

CL-USER>(需要“asdf”)无

但是页面 https://common-lisp.net/project/asdf/asdf.html#Loading-ASDF

加载 ASDF 的推荐方法是:

(需要“asdf”)所有积极维护的 Lisp 实现现在都包含一个 ASDF 3 的副本,您可以使用 Common Lisp 的 require 函数以这种方式加载。1

0 投票
2 回答
818 浏览

common-lisp - 在 sbcl 中升级 asdf 失败

我未能将 asdf 升级到版本 3,因为页面https://common-lisp.net/project/asdf/asdf.html#Replacing-your-implementation_0027s-ASDF

我的环境有什么问题吗?

CL-USER>(加载“/Users/james/Documents/workdir/lisp/source/asdf/tools/install-asdf.lisp”)

找不到 /usr/local/lib/sbcl/contrib/ 的 TRUENAME:没有这样的文件或目录 [SB-INT 类型的条件:SIMPLE-FILE-ERROR]

重启:

0:[RETRY] 重试当前顶层表单的 EVAL。

1:[CONTINUE] 忽略错误并继续加载文件“/Users/james/Documents/workdir/lisp/source/asdf/tools/install-asdf.lisp”。

2:[ABORT] 中止加载文件“/Users/james/Documents/workdir/lisp/source/asdf/tools/install-asdf.lisp”。

3: [RETRY] 重试 SLIME REPL 评估请求。

4: [*ABORT] 返回 SLIME 的顶层。

5:[REMOVE-FD-HANDLER] 删除#

回溯:

0: (SB-IMPL::SIMPLE-FILE-PERROR "找不到~A的真名"#P"/usr/local/lib/sbcl/contrib/" 2)

1: ((FLET SB-IMPL::FAIL :IN SB-IMPL::QUERY-FILE-SYSTEM) "找不到~A的真名"#P"/usr/local/lib/sbcl/contrib/" 2 )

2: (SB-IMPL::QUERY-FILE-SYSTEM #P"/usr/local/lib/sbcl/contrib/" :TRUENAME T)

3: (TRUENAME #P"/usr/local/lib/sbcl/contrib/")

4: (ASDF/INTERFACE::MODULE-FASL "uiop")

5:(ASDF/接口::安装-UIOP-和-ASDF-AS-模块)

6: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ASDF/INTERFACE::INSTALL-UIOP-AND-ASDF-AS-MODULES) #)

7: (SB-IMPL::SIMPLE-EVAL-PROGN-BODY ((ASDF/INTERFACE::INSTALL-UIOP-AND-ASDF-AS-MODULES) (UIOP/IMAGE:QUIT)) #)

8: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PROGN (ASDF/INTERFACE::INSTALL-UIOP-AND-ASDF-AS-MODULES) (UIOP/IMAGE:QUIT)) #)

9: (EVAL-TLF (PROGN (ASDF/INTERFACE::INSTALL-UIOP-AND-ASDF-AS-MODULES) (UIOP/IMAGE:QUIT)) 14 #)

10: ((FLET SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (PROGN (ASDF/INTERFACE::INSTALL-UIOP-AND-ASDF-AS-模块) (UIOP/图像:退出)) 14)

11: (SB-INT:LOAD-AS-SOURCE #:VERBOSE NIL :PRINT NIL :CONTEXT "加载")

12: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) # NIL)

13:(加载“/Users/james/Documents/workdir/lisp/source/asdf/tools/install-asdf.lisp”:VERBOSE NIL:PRINT NIL:IF-DOES-NOT-EXIST T:EXTERNAL-FORMAT:DEFAULT)

14: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LOAD "/Users/james/Documents/workdir/lisp/source/asdf/tools/install-asdf.lisp") #)

15: (EVAL (LOAD "/Users/james/Documents/workdir/lisp/source/asdf/tools/install-asdf.lisp")) --more--

0 投票
2 回答
431 浏览

common-lisp - ASDF 3 包推断系统:指定系统的路径

在包推断系统中,您可以指定对格式为“a/b/c”的包的依赖关系,其中 a 是包名称,并且在“b/c.lisp”中有一个 lisp 文件,它定义了“a/ b/c”包。

有没有办法为包推断系统的文件指定不同的路径?例如,假设文件位于“src/b/c.lisp”而不是“b/c.lisp”。