K.Maebashi's BBS 管理者削除

以下の投稿を削除します。

[2130] Re:いろいろ愚痴りたい((プログラミング言語を作る3章~5章 )
返信
投稿者:mano
2018/05/03 16:13:46

回答ありがとうございます。(1か月ぐらいした後に消そうと思っていて、正直回答を期待していなかったので少し驚きました。) >>p.153のダイナミックスコープの説明でnextから辿る場合、 >>仮に自身と呼び出し元に同じ変数名を定義し、自身内で変数を参照する場合、 >>先に呼び出し元の変数が検知されてしまうので、ダイナミックスコープの動きと >>違うのでは? > >最新のLocalEnvironmentを起点にnextをたどって変数を検索すると、 >先に検知されるのは呼び出し元ではなく自身の方なのでは……? >一応ver.0.2のeval.cのalloc_local_environmentを確認しましたが、 >新LocalEnvironmentのnextに、その時点でのトップのLocalEnvironmentを >連結していますし。 > >635: ret->next = inter->top_environment; >636: inter->top_environment = ret; > > うーん、コード読んでないのがバレました。(だって人が書いた長いコードをインタビューなしで読むのはしんどいもの。。。)で、nextの音の響きから、左から右、上から下、低層から高層(深層)の方向と想定してました。 だから、「最新のLocalEnvironmentのみから検索しますが、nextをたどって、呼び出し経路すべてのLocalEnvironmentから検索するようにすると、」の記述を、 「「最新のLocalEnvironmentのみから検索しますが、【トップレベルでの(グローバル変数に格納された)LocalEnviromnent型の変数を参照の後】nextをたどって、呼び出し経路すべてのLocalEnvironmentから検索するようにすると、」 と補って読んでいました。 なので、nextの本来の使い道はガベージ判定で、ダイナミックスコープ判定の用途でも使えることを言っているのかな?と類推していました。 ま、この部分の私の理解は大体間違っていましたね。 とりあえず、私の理解不足を棚上げしておいて、別の意味に捉えかねないnextの名前が悪い、っと愚痴っときます。(えぇ暴論ですとも。)

代替メッセージ

物理削除     パスワード: