Common Lisp勉強中・・・ (4)

本で言う第5章, シンボル, 文字データと文字列.
本は, 「やさしいLisp入門」.



Lispは, プログラムとデータを厳密に区別することはない.
データとして取り扱っていたリストをプログラムと見做しして実行したり, その逆をしたりできる.
ちょうど昨日やった演習にそれっぽいのがあった.
こういうことか?

> (setf x '(* 3 5))
(* 3 5)
> x
(* 3 5)
> (eval x)
15


シンボルの構造.

|--|
|  | → 自身の名前を示す文字列を記憶
|--|
|  | → シンボルが示す変数の内容を記憶
|--|
|  | → シンボルが示す関数の定義を記憶
|--|
|  | → シンボルに設定される「属性リスト」
|--|
|  | → シンボルが属しているパッケージの情報
|--|

4番目の項目は, 古いLispとの互換性のためと.



変数.
局所変数:let
帯域変数:defvar
スペシャル変数:defvarで利用可能にした変数
Common Lispでは, 帯域変数であることを明示するために, 変数名前後にアスタリスクを付ける習慣がある.


今日はちょっと適当だなあ.