Dear Dmytro,

1) In your example, it is fine to use

List(l, x->List(x));

Maybe I would use only the notation

List(l, ShallowCopy )

to make more it more visible what's going on.


2) Besides this, if l is a matrix, you may use MutableCopyMat,
that will use exactly List(l, ShallowCopy ) to produce the output:

gap> l := [ [1,2], [3,4] ];
[ [ 1, 2 ], [ 3, 4 ] ]
gap> MakeImmutable(l);
gap> IsMutable(l[1]);
false
gap> IsMutable(l);
false
gap> m:=MutableCopyMat(l);
[ [ 1, 2 ], [ 3, 4 ] ]
gap> IsMutable(m);
true
gap> IsMutable(m[1]);
true

There are no other functions in GAP for more general cases.

Best wishes,
Alexander


On 16 Jun 2007, at 02:03, Dmytro Savchuk wrote:

Dear Forum,

I  have  one  simple question. Suppose we have an immutable list whose
entries are immutable lists (e.g. l := [ [1,2], [3,4] ] ). What is the
easiest  way  to  make  a  mutable copy of this structure (so that the
entries become also mutable). The one I came up with is obvious

List(l, x->List(x));

It works here (where I need it), but what if the dimension of the list
is  bigger  than  2?  Maybe  there is something more general? Or it is
necessary to use some recursion?

Thank you!
Dmytro Savchuk

_______________________________________________
Forum mailing list
[email protected]
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to