Next: , Previous: , Up: 制御構造   [Contents][Index]


4.2 汎変数

“汎変数”または“placeフォーム”は値を格納できるLispメモリ中の多くの 場所の一つである。最も単純なplaceフォームは通常のLisp変数である。 しかしリストのcarやcdr、配列の要素、シンボルの属性、そして多くの他の 場所もLispの値が格納される場所である。

setfフォームはsetqに似ているが、単なるシンボルではなく 左辺に任意のplaceフォームを受け入れる点が異なる。たとえば、 (setf (car a) b)aのcarをbに設定する。これは (setcar a b)と同じ作用だが、すべての場所型の設定と アクセスのために2個の別の関数を憶える必要がない。

汎変数はC言語の“左辺値”と類似しており、同じ表記法を使って ‘x = a[i]’は配列から要素を取得し‘a[i] = x’は要素を格納する。 Cではa[i]のようなある種のフォームだけが左辺値になり得るが、Lisp には汎変数になり得るフォームの集合がある。