Subject: Problem with $EV and $SOLVERADCAN [ECL port]
From: Goffioul Michael
Date: Tue, 17 May 2005 10:16:12 +0200
> >>>>> "Goffioul" == Goffioul Michael writes:
>
> Goffioul> I don't have such a working system (only have
> ECL installed). Could
> Goffioul> anybody
> Goffioul> tell me what should happen in $EV when the
> top-level DO-loop finds
> Goffioul> $SOLVERADCAN?
>
> Goffioul> In my case:
> Goffioul> - the IF statement doesn't execute:
> (ATOM (CAR L)) is true
> Goffioul> - the COND statement goes to second clause
> Goffioul> - the OR statement goes to second
> alternative (LET)
> Goffioul> - (MEVAL (CAR L)) returns NIL
>
> FWIW, CMUCL does the same thing.
>
> Then, as you report, (symbolp fl) is T, and the code $nounify's nil,
> which apparently works on CMUCL.
>
> What happens if you just don't nounify if fl is nil? If I do this
> with CMUCL, ev returns
>
> log(125)
> (%o1) [f(x) = --------]
> log(5)
It does the same. However, now if $SOLVERADCAN is T internally, FL will
also be T and you'll try to nounify T, hence changing its property list.
My question is more: is it normal that maxima tries to change the plist
of symbols in the COMMON-LISP package? is this the expected behavior?
Moreover, with the current code, I don't think that an expression like:
ev(solve(5^f(x)=125), solveradcan) has any effect on the internal value
of the $SOLVERADCAN variable (or maybe I'm missing something).
Michael.