8

这就是我从包中导出符号:bar的方式::bazfoo

(in-package :cl-user)
(defpackage foo
   (:use :cl)
   (:export :bar :baz))
(in-package :foo)

当我:baz从导出符号列表中删除时,SBCL 抱怨并且编译失败。

 warning: 
     FOO also exports the following symbols:
       (FOO:BAZ)

如何在:baz不重新加载 SLIME 的情况下让 SBCL 忘记?

4

3 回答 3

13

SBCL

* (apropos "unexport")

UNEXPORT (fbound)


* (documentation 'unexport 'function)

"Makes SYMBOLS no longer exported from PACKAGE."


* (apropos "unintern")

UNINTERN (fbound)


* (documentation 'unintern 'function)

"Makes SYMBOL no longer present in PACKAGE. If SYMBOL was present then T is
returned, otherwise NIL. If PACKAGE is SYMBOL's home package, then it is made
uninterned."
于 2012-07-05T19:23:43.143 回答
2

有很多关于这些问题的文档,您应该阅读或重读。乍一看,这个包/符号的东西听起来很微不足道,但它与其他语言所做的事情有很大的不同,值得一读(即,当涉及到包和符号时,尝试重用来自其他语言的知识特别危险)。

如果在阅读文档后仍然遇到问题,请尝试重新阅读它们(通过遇到问题获得的经验将帮助您专注于相关部分;在阅读之间不陷入麻烦的情况下重新阅读恕我直言,效率并不高)。

我发现一些有用的链接:

于 2012-07-06T05:36:01.180 回答
2

搜索把我带到了这里,但我遇到了稍微不同的问题。

; caught WARNING:
;   MY-PACKAGE also uses the following packages:
;     (DEPENDENCY)

对于这种情况,需要

* (documentation 'unuse-package 'function)

"Remove PACKAGES-TO-UNUSE from the USE list for PACKAGE."
于 2020-11-09T11:00:14.027 回答