LINUX.ORG.RU

История изменений

Исправление 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 описывает синтаксис грубо говоря схемы. Который нам, раз уж мы метапрограммируем, т.е. абстрагируемся от схемы, а не манки-патчим ее нутро, нахрен не сдались.