LINUX.ORG.RU

Вопрос по short-hand специальных форм в Scheme

 , ,


0

2

Являются ли short-hand специальных форм макросами в Схеме?

Например, quote - есть special form.
Что есть ее short-hand вариант '?

Пример:

'(+ 1 2) => (quote (+ 1 2)) => (+ 1 2)

Превращение из 'form в (quote form) происходит на фазе read или macroexpand?
Т.е. когда ридер видит ', то должен ли он вернуть токен ' без изменений (который потом во время macroexpansion превратится в quote) или же ридер сразу должен вернуть список (quote form) без каких либо макросов?

Или без разницы и зависит от имплементации?

★★★★★

'form превращается в (quote form) перед началом макроэкспанда, это не макрос, а фишка ридера (как и другие цитаты).

anonymous ()
Ответ на: комментарий от anonymous

Спасибо, значит все правильно понял!
Просто нигде в документации не мог найти явного упоминания этого.

kovrik ★★★★★ ()
Ответ на: комментарий от kovrik

RnRS вообще много чего опускают, полагаясь на очевидность. В R7RS сказано, что 'form и (quote form) — это синтаксически идентичные примитивные выражения (4.1.2, 7.1.3), где-то как #x0F и 15. Макросы — это производные выражения, которые раскрываются в примитивные. Поэтому типа предполагается, что 'form переписывается в (quote form) перед тем, как раскрываются макросы.

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