SICP 読み (307) 5.5 翻訳系

問題 5.32

見るからに面倒臭そげ。ch5-eceval.scm を eval-dispatch で grep してみた。

$ grep eval-dispatch ch5-eceval.scm 
  (goto (label eval-dispatch))
eval-dispatch
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
  (goto (label eval-dispatch))
$

多いな。って問題文を見るに_演算子が記号である組合せの演算子の評価_とあるな。こんなカンジなんだろうか。

ev-application
  (save continue)
  (assign unev (op operands) (reg exp))
  (assign exp (op operator) (reg exp))
  (test (op variable?) (reg exp))
  (branch (label eval-dispatch))
  (save env)
  (save unev)
  (assign continue (label ev-appl-did-operator))
  (goto (label eval-dispatch))

びみょー。ちなみに b.ですが、翻訳系の利点のすべてが最適化なソレではないのではないか、と。ただ、他に何が、という点を指摘できないあたりが駄目。