% Function UNINTERN
Function UNINTERN
unintern symbol &optional package => generalized-boolean
symbol - シンボル
package - パッケージ指定子。デフォルトは現在のパッケージ。
generalized-boolean - generalized-boolean
uninternは、packageからsymbolを取り除きます。
もしsymbolがpackageに存在するとき、
それはpackageから取り除かれ、
packageのshadowingシンボルリストに存在するなら
それも削除されます。
もしpackageがsymbolのホームパッケージであったときは、
symbolはホームパッケージを持たない状態になります。
symbolは継承によってpackageからアクセスし続けることができるかもしれません。
uninternの使用すると、
シンボルが記録されているホームパッケージを持たなくなりますが、
しかし実際にはいくつかのパッケージからはアクセスできます。
Common Lispはこのような病的なケースをチェックしないので、
そのようなシンボルは常に#:が先頭に印刷されます。
もしsymbolが取り除かれたらuninternはtrueを返却し、
それ以外の場合はnilを返却します。
(in-package "COMMON-LISP-USER") => #<PACKAGE "COMMON-LISP-USER">
(setq temps-unpack (intern "UNPACK" (make-package 'temp))) => TEMP::UNPACK
(unintern temps-unpack 'temp) => T
(find-symbol "UNPACK" 'temp) => NIL, NIL
temps-unpack => #:UNPACK
uninternは、パッケージの一貫したルールが
その変更によって保持されないような方法で、
パッケージシステムの状態を変更します。
パッケージシステムの現在の状態。
uninternにshadowingシンボルが与えられたとき、
以前shadowingによって解決していた名前の衝突が出てきます。
もしパッケージAが、パッケージBとCをuseしており、
Aにはshadowingシンボルxが、
BとCにはそれぞれ外部シンボルxがあるとき、
Aからshadowingシンボルxを取り除くような状況で、
もしb:xとc:xがそれぞれ別物であるときには
名前の衝突が表に出てきます。
このような状況では、uninternはエラーが発生します。
11.1. パッケージの説明
なし。