私はLOLのセクション 6.7 を数回読んだことがありますが、まだ次のことが頭に浮かびません。
以前は外部コードに対して閉じられていたバインディングは、それらのバインディングが効率的なものにコンパイルされ、長い間アクセサー シンボルが忘れられていたとしても、いじくり回せるように広く開かれています。
バインドされたシンボルが本質的にクロージャーの環境でポインターにコンパイルされる場合、どのようにしてシンボルを既にコンパイルされた関数に渡し、関数は何らかの方法でシンボルを比較できますか?
私はpantest
clisp の例をいじっていますが、acc
とthis
内部の両方を変更できることがわかりpantest
ます。をコンパイルおよび逆アセンブルできますpantest
が、すべてのシンボルが環境に表示されます。アセンブリにコンパイルされた Lisp があれば、もう少し直感的に理解できるかもしれませんが、コードが複雑すぎて、説明なしで理解するのはおそらく難しすぎるでしょう。