Racket中“顶级形式”的定义是什么?

时间:2011-11-08 02:01:38

标签: racket

“球拍参考”部分11.9扩展顶级表单和13.2评估和编译使用术语“顶级表单”和功能描述(eval top-level-form [nm])(展开顶级形式)将“顶级形式”作为其功能参数,但我不清楚“顶级形式”的定义”。 Racket语言中“顶级形式”一词的含义是什么?

2 个答案:

答案 0 :(得分:3)

这里的直觉是这些函数都处理“顶级形式”而不是依赖于词汇环境的形式。作为一个半明显的例子,eval只能处理顶级表单,这就是为什么:

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

不起作用。通常只使用“表单”来讨论任何形式,例如对宏的输入 - 当然可以有这样的引用。

答案 1 :(得分:1)

我现在在“球拍参考手册”第1.2.3.1节中找到了一种Backus-Naur格式的顶级形式的精确定义

http://docs.racket-lang.org/reference/syntax-model.html#(part._fully-expanded