为什么print-circle默认为nil?

Le *_*ous 5 lisp printing common-lisp

CLHS说

An attempt to print a circular structure with *print-circle* set
 to nil may lead to looping behavior and failure to terminate.
Run Code Online (Sandbox Code Playgroud)

然后是这样的:

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

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

Fre*_*Foo 8

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

如果你实际上没有使用循环结构(我不是Lisp pro,但我倾向于像瘟疫那样避免使用它们),我不会在生产代码中进行循环检查.