5

CLHS 说

An attempt to print a circular structure with *print-circle* set
 to nil may lead to looping behavior and failure to terminate.

然后是这样的:

为什么这个 Lisp 宏作为一个整体工作,即使每个部分都不起作用?

显然,*print-circle*设置为 nil 会导致意外。为什么*print-circle*在许多系统上默认设置为零?如果我从代码的开头将其全局设置为 t 会出现什么问题?

4

1 回答 1

8

如果设置*print-circle*为 true,则所有输出函数都必须进行循环检查。这意味着它们可能会放慢速度并占用更多内存。

如果您实际上不使用循环结构(而且我不是 Lisp 专业人士,但我倾向于像瘟疫一样避免使用它们),我不会在生产代码中打开循环检查。

于 2013-07-02T15:42:18.990 回答