Next: , Up: set & setq   [Contents][Index]


1.9.1 Using set

シンボルflowersの値にリスト'(rose violet daisy buttercup)をセットしてみましょう。以下の式の後にカーソルを配置してから、C-x C-eをタイプして式を評価してください。

(set 'flowers '(rose violet daisy buttercup))

エコーエリアにリスト(rose violet daisy buttercup)が表示されるはずです。これはset関数がリターンしたものです。副作用としてこのリストがシンボルflowersにバインドされます。すなわち変数としてシンボルflowersを見た場合の値として、このリストが与えられたのです。(ちなみにこれは値をセットするというLispインタープリターにとっての副作用が、人間にとっては関心のある主要な効果となり得ることを示しています。すべてのLisp関数はエラーが発生しなければ値をリターンしなければなりませんが、副作用をもつようにデザインされていないかぎり副作用はありません。)

set式を評価した後にシンボルflowersを評価すれば、セットした値がリターンされます。以下のシンボルの後にカーソルを配置してC-x C-eをタイプしてください。

flowers

flowersを評価すれば、エコーエリアにリスト(rose violet daisy buttercup)が表示されるでしょう。

同じようにしてクォートされた(引用符で括られた)変数である'flowersを評価した場合には、エコーエリアで目にするのはflowersというシンボル自体になるはずです。以下にクォートされたシンボルがあるので試すことができます:

'flowers

setを使う際には、引数を評価されたくなければsetの両方の引数をクォートする必要があることにも注意してください。わたしたちは変数flowersとリスト(rose violet daisy buttercup)のいずれの引数も評価してほしくないので、両方ともクォートしました。(setの1つ目の引数をクォートせずに使う際には、何よりもまずその1つ目の引数を評価します。そのような場合にflowersがまだ値をもっていなければ、‘Symbol's value as variable is void’というエラーメッセージを受け取ることになるでしょう。反対にflowersが評価されて値をリターンした場合には、setはそのリターンされた値へのsetを試みます。関数にとってはこれが正しい状況もあるものの、そのような状況は稀です。)

This page has generated for branch:work/add_lispintr, commit:65845cf60c073f2f3182d1d07483530e9bbe1d96 to check Japanese translation.