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つは登場するでしょう。この名前はシンボルにたいする値として特にリストが結びつけられていたり、別の言い方をするとそのリストをポイントするようにシンボルがセットされているという理由によって選択されます。