explicit list arguments?



>
> 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