stacking two matrices



One more thing, Robert: I take it that tail recursion is quite out.

On Sat, Oct 27, 2007 at 11:51:18AM -0600, Robert Dodier wrote:
> On 10/27/07, Peter Danenberg <pcd at wikitex.org> wrote:
> 
> >     insertrows(A, B, i) := block([n],
> >       head(A, n) :=
> >       if n > 0
> >       then head(submatrix(length(A), A), n - 1)
> >       else A,
> >       tail(A, n) :=
> >       if n > 0
> >       then tail(submatrix(1, A), n - 1)
> >       else A,
> >       n: length(A),
> >       addrow(head(A, n - i), B, tail(A, i)));
> 
> As it happens, function definitions in Maxima are global by default.
> (So are variable bindings as well.) Maxima doesn't have a notion
> of lexical scope. To prevent the definitions of head and tail from
> leaking out of the block, you could write block(local(head, tail), ...).
> That might be the effect you want, although head and tail are then
> redefined every time insertrows is called.
> 
> best
> 
> Robert Dodier