В соответствии с документацией eval
и eval-syntax
ведут себя одинаково, за исключением того, что eval
enriches the input syntax.Разница между `eval` и` eval-syntax`
Если верхний уровень-форма представляет собой синтаксис объект, точка привязки не скомпилированные форм, то его лексическая информация обогащается перед его отправкой в обработчик оценки:
Like eval, за исключением того, что stx должен быть синтаксическим объектом, а его лексический контекст не обогащается до того, как он будет передан обработчику оценки.
Мне сложно понять, что это значит. У меня создается впечатление, что они каким-то образом затрагивают пространства имен, но я не могу придумать примерную программу, где eval и eval-syntax ведут себя по-разному. (При задании объекта синтаксиса.)
Так как же eval
и eval-syntax
отличаются, или, по крайней мере, вы можете дать мне пример программы, которая показывает, что они ведут себя по-другому?
Хм ... так хорошо, что они ведут себя по-другому. Хотя это похоже на то же самое поведение, если вы удалите первые два выражения и используйте '(eval stx)' и '(eval-sytnax stx)' без аргумента ns. –
Также, если я все это делаю в модуле, похоже, что 'eval' и' eval-syntax' делают то же самое снова. (ошибка в том, что векторная карта не определена.) –
Хм ... на самом деле, неважно. Когда я пытаюсь использовать последнюю версию ракетки, она работает так, как вы ее описываете. Благодарю. –