>
> Is it possible to have explicit list arguments?
> foo([lhs,rhs]) := lhs+rhs;
I assume you want to call foo as foo([q,r]), not foo(q,r). Maxima does not
currently support list destructuring like this (though it has been
proposed), but your alternative is easy to express.
Instead of
> foo(lst) := with([lhs:lst[1],rhs:lst[2]], lhs+rhs);
write
foo(list):= block([lhs:list[1],rhs:list[2]], lhs+rhs);
Or any other easy way (possibly no lambda expressions)
> to avoid storing the arguments?
>
I am not sure what you mean by "storing" the arguments.
-s