История изменений
Исправление lovesan, (текущая версия) :
Т.е. AST — это S-выражение? Любой же объект.
В контексте «вообще» - объекты AST, да, s-выражения.
В контексте интерпретации кода макросами - AST это AST. Это метаобъекты, завязанные на конкретную интерпретацию s-выражений. В лиспе не первый раз пытаются такое впихнуть, раньше вон были F-выражения, а когда-то совсем давно M-выражения. Не прижилось en masse, потому что тупо неудобно и непрактично. Это шаг в сторону от homoiconicity.
а иметь в syntax не просто symbol, а различные более специфичные вещи (identifier, keyword, etc) — нет?
Я уже сказал, потому что syntax описывает синтаксис грубо говоря схемы. Который нам, раз уж мы метапрограммируем, т.е. абстрагируемся от схемы, а не манки-патчим ее нутро, нахрен не сдался.
Исходная версия lovesan, :
Т.е. AST — это S-выражение? Любой же объект.
В контексте «вообще» - объекты AST, да, s-выражения.
В контексте интерпретации кода макросами - AST это AST. Это метаобъекты, завязанные на конкретную интерпретацию s-выражений. В лиспе не первый раз пытаются такое впихнуть, раньше вон были F-выражения, а когда-то совсем давно M-выражения. Не прижилось en masse, потому что тупо неудобно и непрактично. Это шаг в сторону от homoiconicity.
а иметь в syntax не просто symbol, а различные более специфичные вещи (identifier, keyword, etc) — нет?
Я уже сказал, потому что syntax описывает синтаксис грубо говоря схемы. Который нам, раз уж мы метапрограммируем, т.е. абстрагируемся от схемы, а не манки-патчим ее нутро, нахрен не сдались.