Emacs Lispを少しだけ理解してみる
Emacs Lispもほんの少しだけ理解したのでそれをまとめてみる。
グローバル変数の束縛
(set 'my-var "hoge")
と
(setq my-var "hoge")
は同じ意味。setのときはmy-varをそのまま書くとそれを評価してしまうようなので、クオートが必要らしい。setqのqはquoteのq。また、setqの場合は複数の変数束縛を一度に行なうことができる。
(setq my-var1 "foo" my-var2 "bar" my-var3 "hoge")
一方
(defvar my-var "hoge")
もグローバル変数の束縛だがsetqとは以下の点で異なる。
- 未定義の変数を初期化する時に使う。既に値が設定されている変数に対してdefvarしても、元の値は変更されない。
- 第3引数に「変数の説明文」をつけることができる。C-h v(または、describe-variable手続き)で変数の説明を見る時にこの説明文が参照される。