SICP第4章では、構文解析を実行から分離することによってメタサーキュラーエバリュエーターが変更され、eval
プロシージャは次のようになります。
(define (eval exp env)
((analyze exp) env))
そして本はanalyze
、実行プロシージャが何度も呼び出されるかもしれない間、これは式で一度呼び出されるので、これは仕事を節約するだろうと言っています。
私の質問は、この最適化はどのように機能するのかということです。再帰的なプロシージャ呼び出しでは機能しますが、他の場合はどうでしょうか。エバリュエーターは式を次々に評価し、eval
同じ形式であっても各式で呼び出されます。