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



I would guess that we have at least an order of magnitude more users who
simply want to use ?print to print out the Lisp representation of a Maxima
expression than we have users who know enough to look at the property list
of a symbol (which may well contain assume data structures).  And the latter
users are probably savvy enough to know about *print-circle*.

Maybe the solution is just to provide a function lisp_print at the Maxima
level (binding *print-circle* to NIL) for those users who want to see the
Lisp representation of Maxima expressions?  For that matter, we can surely
come up with a friendlier display of symbol property lists....

            -s

On Wed, Feb 9, 2011 at 11:06, Robert Dodier <robert.dodier at gmail.com> wrote:

> *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
>