I would like that maxima has multiple integral, I suggest a notation like that
of mathematica, also it would be very nice to have pattern matching in the
arguments of the functions, I have tried to make it but I caught free variables,
that is because I don't know if I can use gensym in maxima (another solution is
going to lisp and implement this).
I don't like this one:
runa([l]):=block([rel], re:l[1],for i:2 thru length(l) do
if listp(l[i]) then re:apply(integrate,cons(re,l[i])) else
re:integrate(re,l[i]),re);
mono(f):=funmake(lambda,[[l],block([rel], re:l[1],for i:2 thru length(l) do
if listp(l[i]) then re:apply(f,cons(re,l[i])) else re:f(re,l[i]),re)]);
mosca(ff)::=buildq([f:ff],lambda([[l]],(re:l[1],for i:2 thru length(l) do
if listp(l[i]) then re:apply(f,cons(re,l[i])) else re:f(re,l[i]))));
Integrate:mosca(integrate);