On 2013-11-10, Jon Robinson <jonwrobinson at verizon.net> wrote:
> Eq01: %rho[rta](%lambda):='product(%rho[j](%lambda),j,1,4);
> Eq02: %rho[ham](%theta,%lambda):=rho[5](%lambda)*RVS(%theta,B);
> Eq03: %rho[aft](%lambda):='product(%rho[j](%lambda),j,6,N[op]);
> Eq04a: %rho[sys](%theta,%lambda):=('product(rho[j](%lambda),j,1,N[op]))*RVS(%theta,B);
> Eq04b: %rho[fix](%lambda):=%rho[5](%lambda)*%rho[aft](%lambda)*%rho[rta](%lambda);
> Eq04c: %rho[sys](%theta,%lambda):=rho[fix](%lambda)*RVS(%theta,B);
Jon, I've considered this again and I think you can get the intended
result as follows.
%rho [rta] : lambda ([%lambda], ...);
%rho [ham] : lambda ([%theta, %lambda], ...);
%rho [aft] : lambda ([%lambda], ...);
That is, let %rho be a hash table (a so-called "undeclared array" in
Maxima) and let the values of the table be lambda expressions (unnamed
functions) with varying numbers of arguments. Then you can call the
various functions as you are now -- %rho[foo](x) or %rho[bar](x, y) or
whatever.
best
Robert Dodier