Subject: assigning operators - case sensitivity problem?
From: Raymond Toy
Date: Mon, 28 Mar 2005 09:48:38 -0500
>>>>> "CY" == C Y writes:
CY> Maxima 5.9.1.1cvs http://maxima.sourceforge.net
CY> Using Lisp SBCL 0.8.20
CY> Distributed under the GNU Public License. See the file COPYING.
CY> Dedicated to the memory of William Schelter.
CY> This is a development version of Maxima. The function bug_report()
CY> provides bug reporting information.
CY> (%i1) postfix("F");
CY> (%o1) "f"
CY> (%i2) postfix("f");
CY> (%o2) "f"
CY> (%i3) (x)f:=x*a;
CY> (%o3) x f := x a
CY> (%i4) 40f;
CY> (%o4) 40 a
CY> (%i5) 40F;
CY> Incorrect syntax: f is not an infix operator
CY> (%i5)
CY> Shouldn't it be distinguishing between upper and lower case here?
I would think so, but having never used postfix, I don't really now.
But if it should distinguish case, the problem is probably here:
(defmfun $postfix (operator &optional (lbp 180.)
(lpos '$any)
(pos '$any))
(upcase operator) ;; <-----
(def-operator operator pos lbp lpos () () t ()
'(led . parse-postfix) 'msize-postfix 'dimension-postfix () ))
where UPCASE intentionally upcases the operator. This also affects
$prefix, $infix, $nary, $matchfix, and $nofix.
Ray