Function UNINTERN

UP


Function UNINTERN

Function UNINTERN

構文

unintern symbol &optional package => generalized-boolean

引数と戻り値

symbol - シンボル
package - パッケージ指定子。デフォルトは現在のパッケージ。
generalized-boolean - generalized-boolean

定義

uninternは、packageからsymbolを取り除きます。 もしsymbolpackageに存在するとき、 それはpackageから取り除かれ、 packageshadowingシンボルリストに存在するなら それも削除されます。 もしpackagesymbolのホームパッケージであったときは、 symbolはホームパッケージを持たない状態になります。 symbolは継承によってpackageからアクセスし続けることができるかもしれません。

uninternの使用すると、 シンボルが記録されているホームパッケージを持たなくなりますが、 しかし実際にはいくつかのパッケージからはアクセスできます。 Common Lispはこのような病的なケースをチェックしないので、 そのようなシンボルは常に#:が先頭に印刷されます。

もしsymbolが取り除かれたらuninterntrueを返却し、 それ以外の場合は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は、パッケージの一貫したルールが その変更によって保持されないような方法で、 パッケージシステムの状態を変更します。

影響

パッケージシステムの現在の状態。

例外

uninternshadowingシンボルが与えられたとき、 以前shadowingによって解決していた名前の衝突が出てきます。 もしパッケージAが、パッケージBCuseしており、 Aにはshadowingシンボルxが、 BCにはそれぞれ外部シンボルxがあるとき、 Aからshadowingシンボルxを取り除くような状況で、 もしb:xc:xがそれぞれ別物であるときには 名前の衝突が表に出てきます。 このような状況では、uninternはエラーが発生します。

参考

11.1. パッケージの説明

備考

なし。


TOP, Github