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 >