如何使Lisp忘记以前导出的符号?
这就是我如何从包如何使Lisp忘记以前导出的符号?,lisp,common-lisp,slime,sbcl,Lisp,Common Lisp,Slime,Sbcl,这就是我如何从包foo导出符号:bar和:baz: (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) 如何让SBCL忘记:baz,而不重新装入粘液?SB
foo
导出符号:bar
和:baz
:
(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)
如何让SBCL忘记:baz
,而不重新装入粘液?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."
关于这些问题有很多文档,您应该阅读或重读。乍一看,这个包/符号的东西听起来很琐碎,但它与其他语言的区别足以值得一读(即,当涉及到包和符号时,试图重用其他语言的知识尤其危险) 如果在阅读完这些文档后,您仍然有困难,请尝试重新阅读它们(遇到困难所获得的经验将有助于您专注于相关章节;在阅读之间重新阅读而不陷入麻烦对IMHO来说不是很有成效) 我发现一些链接很有用:
- 搜索引导我来到这里,但我遇到了稍微不同的问题
; caught WARNING:
; MY-PACKAGE also uses the following packages:
; (DEPENDENCY)
在这种情况下,我们需要
*(文档“未使用包”功能)
“从包的使用列表中删除要使用的包。”