3.12 void 与 undefined
有些过程或表达式形式无需产生结果值。例如,调用过程 display 只是为了其写入到输出的副作用。此时的结果值一般为打印作 #<void> 的特殊常量当表达式的结果只是简单的 #<void> 时,REPL 不会打印任何东西。
过程 void 接受任意数量的参数并返回 #<void>。 (也就是说,标识符 void 被绑定到了一个返回 #<void> 的过程上,而非直接绑定到 #<void>。)
例如:
常量 undefined 打印为 #<undefined>,当某个引用的值不可用时, 它通常作为其结果来使用。在 6.1 版之前的 Racket 中,过早地引用局部绑定会产生 #<undefined>;而现在过早的引用则会触发一个异常。
(define (fails) (define x x) x)
> (fails) x: undefined;
cannot use before initialization