Next: , Previous: , Up: Lispのデータ型   [Contents][Index]


2.2 特別な読み取り構文

Emacs Lispでは特別なハッシュ表記を通じて多くの特別なオブジェクトと構文を表します。

‘#<…>’

入力構文がないオブジェクトはこのように表される(プリント表現と読み取り構文を参照)。

‘##’

名前が空文字列であるようなインターン済みシンボルのプリント表現(シンボル型を参照)。

‘#'’

functionにたいするショートカット。無名関数を参照のこと。

‘#:’

名前がfooであるようなインターンされていないシンボルのプリント表現は‘#:foo’ (シンボル型を参照)。

‘#N’

循環構造のプリント時には構造が自身をループバックすることを表すためにこの構文が使用される。ここで‘N’リストの開始カウント。

(let ((a (list 1)))
  (setcdr a a))
=> (1 . #0)
‘#N=’
‘#N#’

‘#N=’はオブジェクト名、‘#N#’はそのオブジェクトを表すので、これらはコピーではなく同一オブジェクトになる(循環オブジェクトの読み取り構文を参照)。

‘#xN’

16進表現の‘N’ (‘#x2a’)。

‘#oN’

8進表現の‘N’ (‘#o52’)。

‘#bN’

2進表現の‘N’ (‘#b101010’)。

‘#(…)’

文字列のテキストプロパティ(文字列内のテキストプロパティを参照)。

‘#^’

文字テーブル(文字テーブル型を参照)。

‘#s(hash-table …)’

ハッシュテーブル(ハッシュテーブル型を参照)。

‘?C’

文字(基本的な文字構文を参照)。

‘#$’

バイトコンパイル済みファイルのカレントファイル名(ドキュメント文字列とコンパイルを参照)。これはEmacs Lispソースファイルで使用するためのものではない。

‘#@N’

次の‘N’文字をスキップする(コメントを参照)。バイトコンパイル済みファイル内で使用されるものであって、Emacs Lispソースファイル内で使用するためのものではない。

‘#f’

これに続くフォームがEmacs Lispリーダーで読み取れないことを示す。これは表示されることを意図したテキストだけに出現する読み取り構文(読み取れないフォームを示すための他の選択肢よりも見栄えがよくなると思われる場合)、でありLispファイル中に出現することは決してない。