- labels: --> Lisp Core
arrayapply('[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.