根据文档,
eval
和eval-syntax
的行为相同,唯一的区别在于eval
会丰富输入语法。
如果top-level-form是一个语法对象,其数据不是编译形式,则在发送到评估处理程序之前,其词法信息将被丰富:
与eval类似,但stx必须是语法对象,并且在传递给评估处理程序之前其词法上下文不会被丰富。
我很难理解这意味着什么。我有一种印象,它涉及命名空间,但我想不出一个示例程序,其中eval和eval-syntax的行为不同。(当给定一个语法对象时。)
那么,eval
和eval-syntax
有何不同,或者至少您能否给我一个显示它们行为不同的示例程序?
(eval stx)
和(eval-syntax stx)
,它似乎具有完全相同的行为。 - Leif Anderseneval
和eval-syntax
再次执行相同的操作。(错误:vector-map未定义。) - Leif Andersen