Function SET-MACRO-CHARACTER, GET-MACRO-CHARACTER
get-macro-character char &optional readtable => function, non-terminating-p
set-macro-character char new-function &optional non-terminating-p readtable => t
char - 文字
non-terminating-p - generalized-boolean。デフォルトはfalse。
readtable - readtable指定子。デフォルトは現在のreadtable。
function - nilか、2つの引数の関数指定子
new-function - 関数指定子
get-macro-characterの第一返却値functionは、 readtable内にあるcharに関連したリーダーマクロ関数を (もしあるなら)返却するか、 あるいはcharがreadtableにおいてマクロ文字ではないときは nilを返却します。 第二返却値non-terminating-pは、 charが非終端マクロ文字のときはtrueを、 それ以外のときはfalseを返却します。
set-macro-characterは、 readtable内において リーダーマクロ関数であるnew-function (またはnew-functionの指定子)を charのマクロ文字として関連付けます。 もしnon-terminating-pがtrueのとき、 charは非終端マクロ文字になり、 それ以外のときは終端マクロ文字になります。
(get-macro-character #\{) =>  NIL, false
(not (get-macro-character #\;)) =>  false下記の例は、標準構文のシングルクォート・リードマクロの定義を示したものです。
(defun single-quote-reader (stream char)
  (declare (ignore char))
  (list 'quote (read stream t nil t))) =>  SINGLE-QUOTE-READER
(set-macro-character #\' #'single-quote-reader) =>  Tここでのsingle-quote-readerは、 シングルクォートに続くオブジェクトを読み込み、 quoteとそのオブジェクトのリストを返却するものです。 引数のcharは無視されます。
下記の例は、標準構文のセミコロン・リードマクロの定義を示したものです。
(defun semicolon-reader (stream char)
  (declare (ignore char))
  ;; 最初に現在の入力の行全体を飲み込みます。
  ;; コメントがend-of-fileで終端するのは許容します。
  (do () ((char= (read-char stream nil #\Newline t) #\Newline)))
  ;; 0個の値を返却します。
  (values)) =>  SEMICOLON-READER
(set-macro-character #\; #'semicolon-reader) =>  Treadtableは変更されます。
なし。
なし。
なし。