Re: Partial evaluation
- To: mathgroup at smc.vnet.net
- Subject: [mg21331] Re: Partial evaluation
- From: William Knox <bknox at snet.net>
- Date: Fri, 24 Dec 1999 03:42:33 -0500 (EST)
- References: <8320dg$glm@smc.vnet.net> <83pc1e$nhl$3@dragonfly.wolfram.com>
- Sender: owner-wri-mathgroup at wolfram.com
Kevin,
Another way would be to abandon using an array, A, of dimensions n_1 x n_2 x
... x n_k. Use instead a symbolic, functional representation, a, defined on
sequences of integers by
a[n__Integer] := Part[A, n] (* where A is the array of data you are asking
about *).
Function to compute new values would work as in this fragment:
foo[fun_, otherArguements__] :=
......
......
foo[1,1] = 2;
......
Evaluating foo[a, otherArgs] will change the value returned/stored in a[1,1]
To store the result of various operations back in A, do
A = Array[ a[i1_, i2_, i3_, ...], {n1,n2, ...}];
Example:
In[1]:= A =Array[( 10#2 +#1)&,{2 ,3}]
Out[1]= {{11,21,31},{12,22,32}}
In[2]:= a[n__Integer] := Part[A, n]
(* show equivalent *)
In[3]:= Array[a,{2 ,3}]
Out[3]= {{11,21,31},{12,22,32}}
In[4]:= (* modify a *)
In[4]:= a[1,1]= 0; a[2,3]= -a[1,2];
(* matrix of new values of a *)
In[5]:= Array[a,{2 ,3}]
Out[5]= {{0,21,31},{12,22,-21}}
Regards, Bill Knox
>