Common lisp 为什么ql:quickload会忽略错误,而asdf:load系统不会?

Common lisp 为什么ql:quickload会忽略错误,而asdf:load系统不会?,common-lisp,quicklisp,asdf,Common Lisp,Quicklisp,Asdf,我发现有时候ql:quickload只是默默地跳过严重的错误,比如: ;Compiler warnings for "home:common-lisp;mito-email-auth;src;models.lisp.newest" : ; In SEND-CODE: In the form ("Для входа на сайт [Skazorama.ru](~A), перейдите по [этой ссылке](~A)" URL URL), "Для входа на сайт [

我发现有时候
ql:quickload
只是默默地跳过严重的错误,比如:

;Compiler warnings for "home:common-lisp;mito-email-auth;src;models.lisp.newest" :
;   In SEND-CODE: In the form ("Для входа на сайт [Skazorama.ru](~A), перейдите по [этой ссылке](~A)" URL URL), "Для входа на сайт [Skazorama.ru](~A), перейдите по [этой ссылке](~A)" is not a symbol or lambda expression.
(我忘了将宏导入包中。此宏应将代码转换为有用的内容)

但是,当我使用
asdf:load system
加载这个库时,会弹出一个错误,可以进行调试


你是如何适应这种行为的?

这是Quicklisp的一个问题,我不知道有什么好的解决办法

之所以会出现这种情况,是因为Quicklisp在设计上抑制了它提供的库的加载输出,并通过打印
s来总结进度。其想法是,这些支持库是固定的基础设施,输出是不必要的额外噪音

然而,在加载您自己的项目时,这是一种不好的行为,因为这些项目可能处于不断变化之中,对于这些项目来说,冗长且信息丰富的消息非常有用


我还没有找到一个系统来为您自己的项目显示详细的输出,为Quicklisp提供的项目显示简洁的输出。同时,出于我自己的目的,我发现
(ql:quickload“my project”:verbose t)
或将
*quickload verbose*
设置为我需要的真正工作。如果这些选项对您不起作用,我很想了解更多关于您的配置的信息,例如,正在使用的实现和版本。

通常,在生成错误时继续加载库是没有意义的->单个错误通常会导致无数的进一步错误。在我的情况下,加载库“很好”在REPL中没有任何警告。我尝试了:verbose选项和其他选项,但没有任何可见的更改。下面的示例输出表明
:verbose nil
:verbose t
:我有QL客户端版本2017-03-06,asdf版本:3.3.2.2,并在CL1.11.5/v1.11.5(DarwinX8664)(OSX)下运行它们.@AlexanderArtemenko I在本地进行了测试,第二个调用很可能只加载现有的目标文件,而不重新编译代码。更改您的文件以更新测试之间的时间戳,在我的示例中,我第二次看到警告。通过将加载分为两个步骤,我解决了代码的详细输出问题和代码的非详细输出问题。在第一步中,我只加载依赖项,这些依赖项在单独的系统“app deps”中枚举。在第二步,我加载详细的设置应用程序代码–系统“app”,它只依赖于“app deps”@Xach您对这种解决方案有何看法?这是一个很好的本地选项,但我想要一种适用于所有人而不改变其工作方式的自动解决方案。