"trigrat" caught in infinite loop - depending on how you call it
Subject: "trigrat" caught in infinite loop - depending on how you call it
From: Jean-Claude Arbaut
Date: Wed, 07 Nov 2012 19:43:19 +0100
I read your preceding answer a bit too fast :o)
For circular structures, maybe this would help:
http://rosettacode.org/wiki/Deepcopy#Common_Lisp
Le 07/11/2012 19:35, Stavros Macrakis a ?crit :
> Well, it looks as though it's not an issue in the assume database,
> anyway.... All we need to do is wrap $trigrat with (let ((varlist))
> ...).
>
> As for comparing circular lists, yes of course you can write code to
> do the comparison, avoiding infinite recursion. But it's more subtle
> than eq or equal.
>
> -s
>
> On Wed, Nov 7, 2012 at 1:22 PM, Jean-Claude Arbaut
> <jeanclaudearbaut at orange.fr <mailto:jeanclaudearbaut at orange.fr>> wrote:
>
> You're right, of course, but isn't there a way to check changes in
> assume database ?
> I didn't look its type in maxima sources, but it must be a lisp
> object anyway.
>
> Le 07/11/2012 18:38, Stavros Macrakis a ?crit :
>> State is stored in more places than just symbols' values. One
>> possibility is something in the 'assume' database (which is
>> stored in symbols' plists and is a circular list structure that
>> gets modified in-place, so neither equal nor eq are good ways of
>> comparing two versions....
>>
>> -s
>>
>>
>
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu <mailto:Maxima at math.utexas.edu>
> http://www.math.utexas.edu/mailman/listinfo/maxima
>
>