Why is *print-circle* set to T by default? WAS: grinding, etc.
Subject: Why is *print-circle* set to T by default? WAS: grinding, etc.
From: Stavros Macrakis
Date: Wed, 9 Feb 2011 11:14:21 -0500
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
>