Какое определение для "top-level-form" в Racket - PullRequest
6 голосов
/ 08 ноября 2011

Разделы справочника по ракетке 11.9 Расширение форм верхнего уровня и 13.2 Оценка и компиляция используют термин «форма верхнего уровня» и описания функций (eval top-level-form [nm]) и (развернуть форму верхнего уровня) в справочном руководстве в качестве аргумента функции имеют "форму верхнего уровня", но мне неясно определение "форма верхнего уровня".Что означает термин "форма верхнего уровня" в языке Ракетки?

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011

Интуиция здесь заключается в том, что все эти функции имеют дело с «формами верхнего уровня», а не с формой, которая зависит от лексической среды. В качестве очевидного примера, eval может работать только с формами верхнего уровня, поэтому:

(let ([x 10])
  (eval '(* 3 x)))

не работает. Обычное использование просто «форм» говорит о любых формах, таких как входные данные для макросов, которые, конечно, могут иметь такие ссылки.

1 голос
/ 12 ноября 2011

Теперь я нашел точное определение формы верхнего уровня в виде формата Бэкуса-Наура в разделе 1.2.3.1

Справочного руководства по ракетке * ** 1003 тысяча два *http://docs.racket -lang.org / ссылка / синтаксис-model.html # (part._fully вспененные )
...