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
(=> 123
zvar copy-readtable table2 *readtable*) => #<READTABLE 614000277>
(=> VAR
zvar setq *readtable* (copy-readtable)) => #<READTABLE 46210223>
(=> VAR
zvar setq *readtable* (copy-readtable nil)) => #<READTABLE 46302670>
(=> 123 zvar
なし。
なし。
setq *readtable* (copy-readtable nil)) (
上記の式は、入力構文を Common Lisp標準の構文に復元することができ、 初期のreadtable
が壊れているときでも動作します (上記の式を入力できないほど 壊れているわけではないことを想定しています)。
一方、
setq *readtable* (copy-readtable)) (
上記の式は、現在のreadtable
自身をコピーしてそれを置き換えます。 これは、readtable
を変更している間から保護するために、 後で使うreadtable
をコピーして保存したいときに便利です。 また、readtable
をコピーして それ自身を局所的に束縛したいときは、 次のようにするのが便利です。
let ((*readtable* (copy-readtable))) ...) (