K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>回答ありがとうございます。(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の名前が悪い、っと愚痴っときます。(えぇ暴論ですとも。) >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!