До меня наконец дошло, что ЭТО такое НА САМОМ ДЕЛЕ. Написал игрушечный интерпретатор, который считывает строки и эвалит их следующим образом. Есть некий неймспейс, куда добавлены некоторые определения. Если это определение есть в неймспейсе, то на вывод подается значение этого определения, а если нет — эвалится нативным эвалом. Фишка в том, что прямо из интерактивной сессии можно добавлять определения в неймспейс. Например, что-то типа
a
>>>error: no such variable
addToNamespace("a", "1")
>>>ok
a
>>>1
вот он, настоящий метацикл! Тот интерпретатор лиспа, который приводится в SICP — это не метациклический интерпретатор, это просто интерпретатор лиспа, написанный на лиспе. Ну, или то что я накалякал, это не просто метациклический интерпретатор, а «волшебный интерпретатор». Что-то одно из двух.