にシンボルをunshadowする方法:私はシャドウ化「とシンボルがいくつかの実験を行ってきましたCommon Lispの
MATCHERS> (package-shadowing-symbols *package*)
(AND)
どちら(setf (package-shadowing-symbols *package*) nil)
もスライムは動作しません。
にシンボルをunshadowする方法:私はシャドウ化「とシンボルがいくつかの実験を行ってきましたCommon Lispの
MATCHERS> (package-shadowing-symbols *package*)
(AND)
どちら(setf (package-shadowing-symbols *package*) nil)
もスライムは動作しません。
ああは、あなたの問題を解決するために何の非破壊的な方法はありません:「シャドウイング」は、あなたが「光源」の間に「何か」(temp-pack::and
)(cl:and
)、あなたは(文字列を見ているスポットを持っていることを意味し"AND"
):
(let ((*package* (find-package '#:temp-pack)))
(read-from-string "AND"))
=> TEMP-PACK::AND, 3
唯一の方法は、光を遮る障害物を取り除くことです。
shadow
からの変形例が有益でなければなりません:
(package-shadowing-symbols (make-package '#:temp-pack))
=> NIL
(find-symbol "AND" '#:temp-pack)
=> AND, :INHERITED
(shadow "AND" '#:temp-pack)
=> T
(find-symbol "AND" '#:temp-pack)
=> TEMP-PACK::AND, :INTERNAL
(package-shadowing-symbols '#:temp-pack)
=> (TEMP-PACK::AND)
(find-all-symbols "AND")
=> (:AND AND TEMP-PACK::AND)
(unintern 'temp-pack::and '#:temp-pack)
=> T
(find-all-symbols "AND")
=> (:AND AND)
(package-shadowing-symbols '#:temp-pack)
=> NIL
限り、それがそこに抑留されたとして、それはCL:AND
をシャドウイングされますので、あなたが実際にunintern
AND
TEMP-PACK
からする必要があります。
また、シンボルを保存するトリックがない仕事ん:名前が記号が同じであれば
:
intern
は新しいシンボルを作成しますので、これは(shadow "AND" '#:temp-pack) => T (defparameter temp-pack-and 'temp-pack::and) => TEMP-PACK-AND (unintern 'temp-pack::and '#:temp-pack) => T (shadow "AND" '#:temp-pack) => T temp-pack-and => #:AND (eq temp-pack-and 'temp-pack::and) => NIL
です文字列はパッケージ内ですでにアクセス可能であるため、返されます。そのようなシンボルがパッケージ内でアクセスできない場合は、指定された名前の新しいシンボルが作成され、パッケージに内部シンボルとして入力されます。
シンボルの改行は機能しません。 – jkiiski