Tables



> I know there are some work-arounds but are there any plans to have a
> 'tables' function as in Mathematica?

There is a function written in lisp for maxima that comes
close to duplicating Table[].

  http://www.johnlapeyre.com/mmacompat/mma_to_maxima.tar.gz

There is a README that tries to explain things a bit.
The table function is in
  mmacompat_lisp.lisp
Test cases that work are given in
  rtest_mmacompat.mac

This version of Table is not in the most recent 'release'
of the compatibility functions. The old version was written
in maxima and was less capable. Currently the following examples,
mostly from Mathematica, work:

Table(1);
Table(i^2, [i, 10]);
block([i], i:1, Table(i,[i,1,3]));
Table(f(i), [i, 0, 20, 2]);
Table(x,[10]);
Table(10*i + j, [i, 4], [j, 3]);
Table(f(i), [i, 10, -5, -2]);
Table(f[i], [i, 10, -5, -2]);
Table(10* i + j, [i, 5], [j, i]);
Table(100* i + 10* j + k, [i, 3], [j, 2], [k, 4]);
Table(sqrt(x), [x, [1, 4, 9, 16]]);
Table(j^(1/i), [i, [1, 2, 4]], [j, [1, 4, 9]]);
Table(2^x + x, [x, a, a + 5* n, n]);
apply( lambda([x,y], Table(i - j, [i, x], [j, y])), [4,5]);
Table( block(print(i), i^i^i), [i, 3]);
Table(Last(IntegerDigits(x, 2)), [x, [1,6,1,0,0,7,9,8]]);
map(lambda([x],Last(IntegerDigits(x, 2))), [1,6,1,0,0,7,9,8]);
Table(i + j, [i, 3], [j, i]);
Table(Table(i + j, [j, i]), [i, 3]);
apply(lambda([x,y] , Table(i - j, [i, x], [j, y])) , [4,5]);

However, the following, which is a useful example from Mathematica,
fails with this implementation:

 Table(a[x]!, [a[x], 6]);

--John