Raymond Toy <toy@rtp.ericsson.se> writes:
[...]
> Unfortunately, I have no idea where |$for| gets it's property set.
>
> However, adding the following bit of code to nparse.lisp to set the
> upcase property of some symbols seems to fix the problem:
[...]
> I do not know if this is the right solution or if it causes other
> problems, but it does take care of the immediate problem.
I don't think we should explicitly set the UPCASE property.
A fresh Maxima session shows the following things:
[1]> (in-package "MAXIMA")
#<PACKAGE MAXIMA>
MAXIMA[2]> (find-symbol "$FOR")
$FOR ;
:INTERNAL
MAXIMA[3]> (find-symbol "$for")
NIL ;
NIL
MAXIMA[4]> (find-symbol "$DO")
$DO ;
:INTERNAL
MAXIMA[5]> (find-symbol "$do")
NIL ;
NIL
MAXIMA[6]> (find-symbol "$IN")
$IN ;
:INTERNAL
MAXIMA[7]> (find-symbol "$in")
|$in| ;
:INTERNAL
Note that $in behaves differently from $for and $do. This suggests to try
MAXIMA[8]> (unintern '|$in|)
T
We get, e.g.,
MAXIMA[9]> (run)
Maxima 5.9.0pre-cvs (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) for f in [log, rho, atan] do ldisp(f(1))$
(E1) 0
(E2) RHO(1)
%PI
(E3) ---
4
and the UPCASE property is as it should be
(C3) :lisp(symbol-plist '|$for|)
(UPCASE $FOR)
(C3) :lisp(symbol-plist '|$do|)
(UPCASE $DO)
(C3) :lisp(symbol-plist '|$in|)
(UPCASE $IN)
This suggests to find out where (and why) in the maxima sources |$in|
is interned, in the first place.
By the way, the whole issue is just an application of what Yasuaki
Honda explained so nicely in his message dated 15 Mar 2002.
Wolfgang
--
wjenkner@inode.at