custom plus-like operator



Andrei Zorine <zoav1@uic.nnov.ru> writes:

> The difference so far between maxima and lisp implementations is
> that maxima doesn't return infix form of the operator. This is
> exactly what happens:

> (C7) "aa"([x]):=(apply("aa",x));
> 
> (D7) 			  "AA"([x]) := APPLY("aa", x)
> (C8) a aa v;
> 
> (D8) 				   aa(a, v)
> (C9) :lisp $C8
> 
> (($AA) $a $v)
> (C9) :lisp $D8
> 
> ((&aa SIMP) $a $v)

As your transcript indicates, the two "aa" in (C7) are tokenized in a
different way.  The first "aa" becomes the lisp symbol $AA while the
second "aa" is parsed as |&aa|.  Now, $AA and &AA are related via
their property lists, but there is no connection to |&aa|.  So MEVAL
has no chance.  Compare this with

(C1) infix("aa");
(D1) 				     "AA"
(C2) nary("aa");
(D2) 				     "AA"
(C3) "aa"([x]):=apply(nounify("AA"),x);
(D3) 		     "AA"([x]) := APPLY(NOUNIFY("AA"), x)
(C4) a aa v;
(D4) 				    a AA v


Wolfgang