Why does print-circle default to nil?
common-lisp, lisp, printing
Solution
If you set `*print-circle*` to true, then all your output functions have to do cycle checking. That means they may slow down and take more memory.
If you don't actually use circular structures (and I'm not a Lisp pro, but I tend to avoid them like the plague), I wouldn't turn cycle checking on in production code.
Problem
CLHS says ``` An attempt to print a circular structure with *print-circle* set to nil may lead to looping behavior and failure to terminate. ``` And then there's this: Why does this Lisp macro as a whole work, even though each piece doesn't work? Apparently, having `*print-circle*` set to nil leads to surprises. Why is `*print-circle*` set to nil by default on many systems? What can go wrong if I set it to t globally right from the beginning of my code?