Lispオブジェクトを読み込むとは、テキスト形式のLisp式を構文解析し、それに対応するLispオブジェクトを生成することを指します。これにより、LispプログラムはLispコードのファイルからLispへと取り込まれます。このテキストを、オブジェクトの読み込み構文と呼びます。例えば、テキスト ‘(a
. 5)’ は、CAR が a で、CDR が数値 5
であるコンスセルの読み込み構文です。
Lispオブジェクトを出力するとは、そのオブジェクトを表すテキストを生成すること――つまり、オブジェクトをその出力表現に変換することです(出力表現と読み取り構文を参照)。前述のコンスセルを出力すると、‘(a . 5)’というテキストが生成されます。
読み取りと出力は、おおむね逆の操作である。あるテキストを読み取って得られたオブジェクトを出力すると、多くの場合同じテキストが得られ、オブジェクトを出力して得られたテキストを読み取ると、通常はそれに似たオブジェクトが得られる。例えば、記号
foo を出力するとテキスト ‘foo’ が得られ、そのテキストを読み取ると記号 foo が返される。要素が a と b であるリストを出力するとテキスト ‘(a
b)’ が得られ、そのテキストを読み取ると、要素が a と b であるリスト(ただし同一のリストではない)が得られる。
ただし、これら2つの操作は厳密には互いに逆ではありません。例外は次の3種類あります。