Why is *print-circle* set to T by default? WAS: grinding, etc.



*print-circle* is set to T because circular lists are stuck onto
the symbol property list by the assume mechanism.
Various Lisps barf on that (endless printing or stack overflow).

e.g. with Clisp 2.42:

assume (x > 0);
:lisp (let ((*print-circle* nil)) (print (symbol-plist '$x)))
 => stack overflow

CMUCL 19a:

assume (x > 0);
:lisp (let ((*print-circle* nil)) (print (symbol-plist '$x)))
 => endless mess

The problem is that the bad behavior isn't limited to
the assume system. You could be looking at something else.

FWIW

Robert Dodier