Function COPY-READTABLE

UP


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-readtablenilではないとき、to-readtable。 そうではないときは新しいreadtable

定義

copy-readtableは、from-readtableをコピーします。

to-readtablenilのときは、 新しい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

影響

なし。

例外

なし。

参考

readtable, *readtable*

備考

(setq *readtable* (copy-readtable nil))

上記の式は、入力構文を Common Lisp標準の構文に復元することができ、 初期のreadtableが壊れているときでも動作します (上記の式を入力できないほど 壊れているわけではないことを想定しています)。

一方、

(setq *readtable* (copy-readtable))

上記の式は、現在のreadtable自身をコピーしてそれを置き換えます。 これは、readtableを変更している間から保護するために、 後で使うreadtableをコピーして保存したいときに便利です。 また、readtableをコピーして それ自身を局所的に束縛したいときは、 次のようにするのが便利です。

(let ((*readtable* (copy-readtable))) ...)

TOP, Github