为什么print-circle默认为nil?

时间:2013-07-02 15:38:42

标签: printing lisp 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.

然后就是这样:

Why does this Lisp macro as a whole work, even though each piece doesn't work?

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

1 个答案:

答案 0 :(得分:8)

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

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