このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

環境とフレームとエンクロージャ、クロージャ

  • 「環境=フレーム+エンクロージャ」ということだが、
  • フレームは束縛セット(キー/値ベアの集合)であって、あえて言葉を作る必要なんてない。
  • 単数形の束縛(binding)は使っているのだから、binding set とか a set of binding とでも言えば十分。
  • フレームって言葉は、関数フレーム(スタックフレーム)と紛らわしいし、そもそも関数フレームの意味でもフレーム使ってるし。
  • エンクロージャーは、包囲、周囲、周辺とか訳すんだろうが、クロージャと紛らわしい!
  • これも不要な言葉。親スコープへの参照と言えばこと足りる。
  • 結局、フレームもエンクロージャーも混乱を増すだけでなくてもいい言葉。束縛セット、親スコープでいい。

クロージャはそれじゃなくても用法がゴチャゴチャな言葉なのに、

  • ユーザー定義関数をクロージャと呼んでいる風がある。
  • 理由は、ユーザー定義関数には静的スコープが引っ付いているからだろう。
  • 確かに、関数本体と自由変数に対する束縛セットの組は、クロージャではある。
  • だが、ユーザー定義関数は素直に「ユーザー定義関数」と呼びゃいいじゃん。
  • 「関数本体+自由変数の束縛」をクロージャと呼ぶのはまーいい。
  • クロージャ関数」なんて、バカっぽくて恥ずかしいから言えない。
  • フレームのことを評価環境とか実行環境とか呼ぶのも紛らわしい。
  • 評価環境は通常、クロージャの束縛部分のことだろう。ローカル変数用の環境を意味するのは変。
  • 環境のルックアップでinheritsとか、誰かが喜んだり怒ったりするような言葉を使うのもどうか?
  • こんなことだから、説明するほうも説明されるほうもワケワカになる。