On 6/19/07, Fabrizio Caruso <caruso at dm.unipi.it> wrote:
> (%i22) foo (x) := block (local (b), array (b, 5), arrayapply(b,[1,2,3]) :
> x, listarray (b));
Oh -- array(b, 5) declares an array with a fixed number of indices
(namely 1). If you want to use a variable number of indices,
either the array declaration must be more clever
(e.g. apply(array, append(b, L)) where L is a list of integers)
or just omit the declaration so the array is undeclared and
therefore a hash table.
e.g.
foo (x, [L]) := block (local (b), b [L] : x, arrayinfo (b));
foo (100, 1, 2, %pi, a);
=> [hashed, 1, [[1, 2, %pi, a]]]
arrayinfo (b);
=> (error: no such array)
Sorry this is so confusing.
Robert