お題は Let Over Lambda 1. Introduction から 2.3. Lexical and Dynamic Scope くらいまで
# g000001さん、いつも進行役お疲れ様です。勉強させてもらってます。
勉強会ログ以下、気になったことの列挙と感想
エクステント
スコープは、「どこ」で参照できるか(空間的な意味)
エクステントは、「いつ」参照できるか(時間的な意味)
静的バインディングは不定エクステントをもつ
動的バインディングは動的エクステントをもつ
で、参照がなくなった実体は破棄される(GC)
これが噛み砕ければ、また一歩CLに関して賢くなれそうだ Common Lisp の スコープ と エクステント (PDF)
マクロはLISPの構文木に対して作用する (Macros change the syntax of lisp code.)
これかな?
「ハッカーと画家」p181より
LispのプログラムコードはLispのデータオブジェクトからできている。
それは、ソースコードというようなつまらない意味じゃない。Lispのコ
ードは、ひとたびパーザによって読まれたら、あなたが解析することが
できるデータ構造になるんだ。
コンパイラの動作を理解していれば、Lispの構文は奇妙だと言って
Lispには構文がないといっても大した違いはないということが分かるだ
ろう。他の言語ならコンパイラが構文解析して内部に作られる構文木を、
Lispでは直接プログラムとして書き下すわけだ。しかも、この構文木は
プログラムからアクセスできるから、構文木自身を操作するプログラム
を書くことができる。Lispではそのようなプログラムをマクロと呼ぶ。
いわば、プログラムを生成するプログラムだ。
マクロなしLISPをBulbと呼ぶ (A language without lisp macros is a Bulb.)
良くデザインされたユーティリティは、それらを組み合わせて使う ことにより個々の生産性の総和を超えるものを得ることができる (well-designed utilities can, when combined, work together to give a greater than the sum of the parts productivity advantage.)
UN*Xのコマンド群とシェルスクリプトはこれの良い例だろうね
0 件のコメント:
コメントを投稿