Function GENSYM

UP


Function GENSYM

Function GENSYM

構文

gensym &optional x => new-symbol

引数と戻り値

x - 文字列か、非負の整数。 複雑な動作をするので下記をご確認ください。
new-symbol - 新しい、uninternなシンボル

定義

make-symbolが呼ばれたかように、 新しく、uninternなシンボルが作成し返却されます。 (gensymmake-symbolの唯一の違いは、 どのようにnew-symbolの名前を決めるかです)

new-symbolの名前は、 標準では"G"のプレフィックスと、 標準では*gensym-counter*の値を 10進数の数で表現したサフィックスを、 順に結合したものになります。

もしxが与えられ、それが文字列のときは、 そのgensymが呼ばれたときのみ、 "G"の代わりのプレフィックスとして使われます。

もしxが与えられ、それが整数のときは、 そのgensymが呼ばれたときのみ、 *gensym-counter*の値の代わりとして、 サフィックスの整数値として使われます。

明にサフィックスが与えられなかった場合は、 実行後に*gensym-counter*がインクリメントされます。

例文

(setq sym1 (gensym)) =>  #:G3142
(symbol-package sym1) =>  NIL
(setq sym2 (gensym 100)) =>  #:G100
(setq sym3 (gensym 100)) =>  #:G100
(eq sym2 sym3) =>  false
(find-symbol "G100") =>  NIL, NIL
(gensym "T") =>  #:T3143
(gensym) =>  #:G3144

副作用

*gensym-counter*はインクリメントされるかもしれません。

影響

*gensym-counter*

例外

もしxが文字列でも、非負の整数でもなければ、 型type-errorのエラーが発せられます。

参考

gentemp, *gensym-counter*

備考

gensymの引数に数値を渡す機能は非推奨になり、 明示的に*gensym-counter*を束縛するのが 様式上好まれるようになりました。 (オプション引数の多少奇妙な慣習は、本来の歴史的なものであり、 主に古いLispの方言との互換性のためにサポートされています。 現代のコードでは、引数に文字列のプレフィックスのみを 使用することが推奨されています。 しかし、一般的には、 より柔軟にnew-symbolの名前を制御したいのであれば、 代わりにmake-symbolの使用を検討してください。)


TOP, Github