SICP-Lite #3

気づくと、まだ3回目。もっと、何回もやっている記憶がするなぁ。

環境フレーム

今日は、環境と環境フレームの話からスタート。
SICPの本には、環境の説明がされているのですが、Gaucheの本には同じことを環境フレームと言う概念で説明してます。
Gaucheの本をちゃんと読んでいないけど、SICPよりもやっぱりわかりやすく解説してくれてる感じです。
ちなみに、『プログラミング in Ocaml』でも、同様に環境フレームで説明してた気がする。

ダイナミックスコープとレキシカルスコープ

だいたい理解できた。Gaucheでどうやってテストできるかなぁ、と思っていたのですが、
これで、okですね。

(let ((y 7))
  (define (scope-test x)
        (list x y))
  (scope-test 3)  ; => (3 7)
  (let ((y 5))
        (scope-test 3)))  ; => (3 7)

と言うことで、その手続きが定義された時点の環境で自由変数が束縛されている、と言うのがわかる。
ちなみに、ダイナミックスコープの場合の環境の絵ってどうなるんだろう。イメージ的には、変数テーブルが大域にしかなくって、新たに変数を束縛しちゃうと、そのテーブルに積まれちゃって、元の値が見れなくなる、って感じだろうか?

残りの収穫

『シェルは常識、LLは教養、仕事はJava』ワロタ。
『残る関数型言語は、Haskellのみ』すごすぎ。

では、次回もよろしく〜。