我试图理解错误信息,以便我可以考虑一下
修理它。解决以下错误的正确方法是什么?我是不是该
请将:oslib
,:quicklisp
和:quicklisp.osicat
添加到包含书籍中
在books/oslib/rmtree.lisp
内?我的包含书形式错了吗?
ACL2 !>(include-book "oslib/top" :dir :system :ttags (oslib quicklisp
quicklisp.osicat))
ACL2 Error in ( INCLUDE-BOOK "oslib/top" ...): The ttag :OSLIB associated
with file /<elided>/acl2/books/oslib/lisptype.lisp
is not among the set of ttags permitted in the current context, specified
as follows:
((:OSLIB "/<elided>/acl2/books/oslib/rmtree.lisp")
:QUICKLISP :QUICKLISP.OSICAT).
See :DOC defttag.
Summary
Form: ( INCLUDE-BOOK "oslib/top" ...)
Rules: NIL
Time: 0.47 seconds (prove: 0.00, print: 0.00, other: 0.47)
ACL2 Error in ( INCLUDE-BOOK "oslib/top" ...): See :DOC failure.
******** FAILED ********
ACL2 !>
答案 0 :(得分:1)
我强烈建议您始终在include-books上使用:ttags :all
,或者完全省略:ttags
参数并禁止显示警告。例如,您可以这样做:
(include-book "oslib/top" :dir :system :ttags :all)
这看起来有点矫枉过正 - 当你知道它只需要oslib
,quicklisp
和{{}时,你为什么要允许本书中的任何信任标记? 1}?仅允许您知道需要的少数信任标签更安全吗?
问题是:即使oslib / top book只需要这三个ttags 今天,也许将来有人会以某种方式扩展它需要额外的信任标签。如果发生这种情况,您必须使用此受限制的信任标记集更新包含它的每个位置。将这本书乘以许多书籍,你的手上就会弄得一团糟。
无论如何,如果您真的想限制信任标记的使用,最好将这些限制放在quicklisp.osicat
文件的cert-flags
部分,以便您可以控制它们在目录的粒度而不是个人包括。有关详细信息,请参阅custom certify-book commands。
答案 1 :(得分:0)
要允许图书自己包含标记,请将标记放在parens中,如下所示:
(include-book "oslib/top" :dir :system :ttags ((oslib) (quicklisp)
(quicklisp.osicat)))