超循環評価器

SICP 4.1 節に出てきて、この節のメインテーマになっております。以下に原文の記述を引用させて頂きます。metacircular evaluator には二つの基本的な部分 (eval-apply) がある、とのこと。

Our evaluator for Lisp will be implemented as a Lisp program. It may seem circular to think about evaluating Lisp programs using an evaluator that is itself implemented in Lisp. However, evaluation is a process, so it is appropriate to describe the evaluation process using Lisp, which, after all, is our tool for describing processes.3 An evaluator that is written in the same language that it evaluates is said to be metacircular.

The metacircular evaluator is essentially a Scheme formulation of the environment model of evaluation described in section 3.2. Recall that the model has two basic parts:

1. To evaluate a combination (a compound expression other than a special form), evaluate the subexpressions and then apply the value of the operator subexpression to the values of the operand subexpressions.

2. To apply a compound procedure to a set of arguments, evaluate the body of the procedure in a new environment. To construct this environment, extend the environment part of the procedure object by a frame in which the formal parameters of the procedure are bound to the arguments to which the procedure is applied.

Structure and Implementation of Computer Program より引用
上記の_metacircular evaluator_を和田英一さんは「超循環評価器」と訳されました。

そして

図 4.1 eval-apply の輪は計算機言語の本質を見せる、というキャプションとともに太極図が出てきます。



この eval-apply の太極図は実は表紙にも、だったりしておりますね。

そして

表紙には λ も勿論出てきてます。λ 好きだよ λ