Recent changes to 498: ('[a,b,c])[2] and ('v)[2]https://sourceforge.net/p/maxima/bugs/498/2004-01-28T18:34:21Z('[a,b,c])[2] and ('v)[2]2004-01-28T18:34:21Z2004-01-28T18:34:21ZStavros Macrakishttps://sourceforge.net/u/macrakis/https://sourceforge.nete99c5cb5d2a04b37090efebd5b631d295dc32155arrayapply\('\[a,b\],\[2\]\) => b OK
\('\[a,b\]\)\[2\] =>
Illegal form - SIMPLIFYA:
\(\(\(\(MLIST\) |$a| |$b|\)\) 2\)
cf bug 866706: \('m\)\[1\] => m\(2\), not v\[2\]
What is going on here is that Maxima wants to treat
\('f\)\(x\) == funmake\('f,\[x\]\) == apply\('\('f\),\[x\]\)
which I find a very poor convention, because it means
that the \(...\)\(...\) construction is non-compositional.
After all,
\('f+0\)\(x\) == apply\('f,\[x\]\)
So, ... how do you explain this? Do you consider \('...\)\(\)
== \('\(...\)\)\(\) to be a special \*syntactic\* construction,
even though the parser doesn't parse it into any sort of
special internal form? Yuck, yuck, yuck.
The fact that apply\('\('f\),...\) is special-cased is less
problematic, but still weird, since apply\('\('f+0\),...\) does
the same thing, though apply\('\(factor\('fff\)\),\[x\]\) gives an
error. More yuck.
Ayway it doesn't use funmake to construct the result,
so screws up the error.
I am not sure what the best fix is. I am tempted to
completely eliminate \('f\)\(x\) and apply\('\('f\)...\) as special
cases. Then everything "just works". True, you need to
use funmake to avoid evaluating, but that should be OK.