% Function COPY-READTABLE
Function COPY-READTABLE
copy-readtable
&optional
from-readtable to-readtable => readtable
from-readtable - readtable
指定子。デフォルトは現在のreadtable
。
to-readtable - readtable
か、nil
。
デフォルトはnil
。
readtable -
to-readtableがnil
ではないとき、to-readtable。
そうではないときは新しいreadtable
。
copy-readtable
は、from-readtableをコピーします。
to-readtableがnil
のときは、
新しいreadtable
が生成されて返却されます。
そうではないときは、
指定したto-readtableが修正されて返却されます。
copy-readtable
は、readtable-case
の設定をコピーします。
(setq zvar 123) => 123
(set-syntax-from-char #\z #\' (setq table2 (copy-readtable))) => T
zvar => 123
(copy-readtable table2 *readtable*) => #<READTABLE 614000277>
zvar => VAR
(setq *readtable* (copy-readtable)) => #<READTABLE 46210223>
zvar => VAR
(setq *readtable* (copy-readtable nil)) => #<READTABLE 46302670>
zvar => 123
なし。
なし。
(setq *readtable* (copy-readtable nil))
上記の式は、入力構文を
Common Lisp標準の構文に復元することができ、
初期のreadtable
が壊れているときでも動作します
(上記の式を入力できないほど
壊れているわけではないことを想定しています)。
一方、
(setq *readtable* (copy-readtable))
上記の式は、現在のreadtable
自身をコピーしてそれを置き換えます。
これは、readtable
を変更している間から保護するために、
後で使うreadtable
をコピーして保存したいときに便利です。
また、readtable
をコピーして
それ自身を局所的に束縛したいときは、
次のようにするのが便利です。
(let ((*readtable* (copy-readtable))) ...)