Next: Counting, Previous: Using set, Up: set & setq [Contents][Index]
setq
実際問題として、あなたはほとんどの場合はset
の1つ目の引数をクォートすることになるでしょう。set
と1つ目の引数のクォートは非常に一般的な組み合わせであり、setq
という独自の名前をもつスペシャルフォームが存在します。このスペシャルフォームは手作業でクォートマークをタイプする必要がないように、1つ目の引数を自動的にクォートするという点を除いてset
と同じです。更に利便性のために、単一の式の中で複数の異なる変数に別々に値をセットすることができるのです。
setq
を用いて変数carnivores
にリスト'(lion tiger
leopard)
をセットするために、以下の式を使うことができます:
(setq carnivores '(lion tiger leopard))
setq
によって1つ目の引数が自動的にクォートされることを除けば、これはset
を使った場合とまったく同じです(setq
の‘q’はクォートのquote
を意味する)。
set
の場合には以下のような式になるでしょう:
(set 'carnivores '(lion tiger leopard))
異なる変数に別々に値を割り当てるためにsetq
を使うこともできます。1つ目の引数には2つ目の引数の値、3つ目の引数には4つ目の引数の値、...といったようにバインドされるのです。たとえば以下のように樹木のリストをシンボルtrees
、草食動物のリストをシンボルherbivores
に割り当てることができます:
(setq trees '(pine fir oak maple) herbivores '(gazelle antelope zebra))
(この式は1行に記述することもできますが1頁に収まらないでしょうし、人間にとっては見栄えよくフォーマットされたリストのほうが読み易いものです。)
これまでわたしは“割り当てる(assign)”という用語を使用してきましたが、set
とsetq
の機能については別の考え方があります。それはいうなればset
とsetq
がシンボルにリストを指し示す、ポイント(point)させるという考え方です。この後者の考え方は非常に一般的であり、この先のチャプターでは名前の一部として“pointer”を含んだシンボルが少なくとも1つは登場するでしょう。この名前はシンボルにたいする値として特にリストが結びつけられていたり、別の言い方をするとそのリストをポイントするようにシンボルがセットされているという理由によって選択されます。