LINUX.ORG.RU

Метацикл

 


0

2

До меня наконец дошло, что ЭТО такое НА САМОМ ДЕЛЕ. Написал игрушечный интерпретатор, который считывает строки и эвалит их следующим образом. Есть некий неймспейс, куда добавлены некоторые определения. Если это определение есть в неймспейсе, то на вывод подается значение этого определения, а если нет — эвалится нативным эвалом. Фишка в том, что прямо из интерактивной сессии можно добавлять определения в неймспейс. Например, что-то типа

a
>>>error: no such variable
addToNamespace("a", "1")
>>>ok
a
>>>1
Мы расширили синтаксис прямо изнутри интерактивной сессии, безо всяких костылей, макросов, и даже фэкспры не нужны!

вот он, настоящий метацикл! Тот интерпретатор лиспа, который приводится в SICP — это не метациклический интерпретатор, это просто интерпретатор лиспа, написанный на лиспе. Ну, или то что я накалякал, это не просто метациклический интерпретатор, а «волшебный интерпретатор». Что-то одно из двух.

Ответ на: комментарий от buddhist

Когда откроет для себя рефал и начнет срать в рефалотеги

Не, он же js-утенок, и хочет доказать что он такой же мощный как лишпик.

bj
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.