2

当试图为 common lisp 使用 mpd 接口时,相应的 asdf 系统被简单地命名为“mpd”,我遇到了一个特殊的问题。当我加载系统时,它似乎成功了,但是当我尝试使用这些函数时,它会声称它们是未定义的。在实验中,我尝试将系统重命名为“cl-mpd”,然后加载它,结果发现它有效。因此,我得出结论,ASDF 正在加载一个不同的系统,也称为“mpd”。一般为了避免重命名系统等黑客行为,我在quicklisp的安装目录中寻找有问题的系统,但无济于事。我在我的主文件夹中搜索它,但没有成功。

所以现在我问你:有没有办法在磁盘上获取 ASDF 系统的位置?

4

2 回答 2

2

这是你要找的吗?

(asdf:system-relative-pathname :foo "foo/bar/baz.lisp")

(asdf:component-pathname (asdf:find-component :foo '("bar" "baz")))

于 2013-01-15T04:20:32.967 回答
1
  1. find the system
  2. get the components
  3. look at one of them

Example:

(describe (first (asdf:module-components (asdf:find-system "mpd"))))
于 2013-01-09T00:52:01.337 回答