Re: Compile. Not again
- To: mathgroup at smc.vnet.net
- Subject: [mg56474] Re: [mg56470] Compile. Not again
- From: yehuda ben-shimol <bsyehuda at gmail.com>
- Date: Tue, 26 Apr 2005 21:52:29 -0400 (EDT)
- References: <200504260534.BAA14453@smc.vnet.net>
- Reply-to: yehuda ben-shimol <bsyehuda at gmail.com>
- Sender: owner-wri-mathgroup at wolfram.com
You just need to use SetDelayed (:=) that is f := Compile[{}, Module[{L = {0}}, L[[1]]++; L]] and it will behave as you expect yehuda On 4/26/05, Maxim <ab_def at prontomail.com> wrote: > Here's what I get in version 5.1.0: > > In[1]:= f = Compile[{}, Module[{L = {0}}, L[[1]]++; L]] > > In[2]:= a = f[] > > Out[2]= {1} > > In[3]:= b = f[] > > Out[3]= {2} > > In[4]:= Table[f[], {3}] > > Out[4]= {{5}, {5}, {5}} > > In[5]:= {a, b} > > Out[5]= {{5}, {5}} > > Each subsequent call to f uses the modified value of L. This also affects > Table and all the objects involved in assignments such as x = f[] (but not > x = f[][[1]]), including DownValues[Out]. The problem might be related to > deciding whether a and b point to the same shared object. > > Maxim Rytin > m.r at inbox.ru > >
- References:
- Compile. Not again
- From: Maxim <ab_def@prontomail.com>
- Compile. Not again