2008年9月19日金曜日

【CL入門】9 宣言

業務繁忙にて、まとまった時間がとれない。休み時間とかにちょこちょこCL入門だけでも進めるしかない。

  • バインドって何だっけ、、、そうか、(環境に)新しい記号とそれが指す値を登録することだ。
  • おお、progvをつかうと、大域変数のスコープを動的にできるんだ。ん? 違うか、大域変数はそもそも動的であり、それの制御にprogvが使えるってことか。
  • このあたりがREPL(=大域の一形態)の特質につながっているのだな。

    CL-USER(152): (defun cnt ()
    (setq x (1+ x)))
    CNT
    CL-USER(153): (setq x 0)
    0
    CL-USER(154): (cnt)
    1
    CL-USER(155): x
    1
    CL-USER(156): (progv '(x) '(2) (cnt) x)
    3
    CL-USER(157): x
    1
    CL-USER(158): (let ((x 2))
    (cnt)
    x)
    2
    CL-USER(159): x
    2

  • バインドの認識は冒頭のものでは不十分かもしれない。スコープの概念がないからだ。
  • 宣言がらみは、スコープ、エクステント、環境というののどれを主軸に理解するか、がちょっと複雑。
  • 今は写経なので、深掘りしない。

とりあえず、スペシャル変数の前まで写経。
一章すら進まないが、こつこつ。

0 件のコメント: