Некоторые макрокоманды в Racket - PullRequest
7 голосов
/ 09 апреля 2011

Я долго путаюсь с терминами, думая, что хорошо спросить, что именно они означают:

A. синтаксис. B. значение синтаксиса. C. Синтаксис объекта. D.s-экспрессия E.datum (в синтаксисе-> датум)

  • В чем разница между s-выражением и символом?
  • В чем разница между s-выражением и датумом?
  • Чем отличается (синтаксис, значения синтаксиса и объект синтаксиса) от s-выражения?
  • Примеры кодов для объяснения приветствуются.

1 Ответ

6 голосов
/ 10 апреля 2011

«Синтаксис» - это тип для представления исходного кода в Racket, который является оберткой для S-выражения (подробности см. В недавнем сообщении в блоге ). «Значение синтаксиса» и «объект синтаксиса» являются синонимами этого, и в древние времена языковые функции mzscheme, которые имели дело с синтаксисом, использовали syntax-value в имени. В наши дни мы используем просто «синтаксис» чаще, а для формы множественного числа мы используем «синтаксис».

«S-выражение» - это либо примитивная часть данных, которую можно набирать в коде (символы, числа, строки, логические значения и т. Д. - в Racket вы также можете включить другие типы), либо список этих вещей , Следовательно, S-выражение - это любая вложенная структура списков, составленных из этих примитивных типов на границе. Иногда это также включает векторы (поскольку они могут быть введены с использованием синтаксиса #(...)), но чаще они не учитываются.

Наконец, "datum" - это другое имя для S-выражения, иногда, когда вы хотите сослаться на тот факт, что это часть данных, которая имеет входное представление. Вы можете видеть, как R5RS представляет его: <Datum> может быть любым внешним представлением объекта Scheme [...]. Эта нотация используется для включения буквенных констант в код Схемы.

Что касается ваших вопросов:

  • В чем разница между s-выражением и символом?

    Символы - это S-выражение, S-выражение может содержать символы.

  • В чем разница между s-выражением и датумом?

    Ничего особенного. (Хотя могут быть некоторые тонкие различия намерений.)

  • В чем отличие (синтаксис, значения синтаксиса и объект синтаксиса) от s-выражения?

    Они представляют собой синтаксис программы, используемый макросами в ракетке - они содержат S-выражений, но они добавляют информацию о местоположении источника, лексический контекст, свойства синтаксиса и сертификаты. Смотрите краткое сообщение в блоге.

...