Re: Re: Module Behavior
- To: mathgroup at smc.vnet.net
- Subject: [mg84677] Re: [mg84671] Re: Module Behavior
- From: "Marcelo Mayall" <mmayall at bol.com.br>
- Date: Wed, 9 Jan 2008 03:48:49 -0500 (EST)
- References: <flvcpr$49b$1@smc.vnet.net> <200801081146.GAA07673@smc.vnet.net>
Thanks Jens, Unfortunately in my case it is not really an advantage using the way you propose: Module[{a, b}, a = b; b = 1; Evaluate[a]] I am really interesting in using "b[1]". I've also tried: Module[{a, b}, a = b[1]; b[1] = 1; Evaluate[a]] But still the global b$* persists. One way I found to avoid this is: Module[{a, b}, a = b[1]; b[1] = 1; a = b[1];] But I do not think that the extra set "a=b[1]" is an elegant solution. Probably there is a better way to solve this. Regards, Marcelo Mayall ----- Original Message ----- From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de> To: <mathgroup at smc.vnet.net> Sent: Tuesday, January 08, 2008 9:46 AM Subject: [mg84677] [mg84671] Re: Module Behavior > Hi, > > no, because the b$* are only removed when no expression > in your session include the local generated variables > If you change your Module to > > Module[{a, b}, b[1] = 1; a = b[1];] > > everything is fine, but with your definition > a is not evaluated again and so it will hold > a reference to the local defined variable b. > If you like you can resolve this by > > Module[{a, b}, a = b; b = 1; Evaluate[a]] > > and you will see that the global $b* are gone .. > > Regards > Jens > > Marcelo Mayall wrote: >> One of the main features of the function Module is that you can specify >> symbols to be treated as local. For example: >> >> In[1]:= Module[{a, b}, a = b; b = 1;] >> In[2]:= {Names["a$*"], Names["b$*"]} >> >> Out[2]= {{}, {}} >> >> However, if we change the local symbol "b" to "b[1]" it does not treat >> as local anymore. >> >> In[3]:= Module[{a, b}, a = b[1]; b[1] = 1;] >> In[4]:= {Names["a$*"], Names["b$*"]} >> >> Out[4]= {{}, {"b$69"}} >> >> And each time you execute this command line a new variable "b$*" will be >> created. >> >> In[14]:= Module[{a, b}, a = b[1]; b[1] = 1;] >> In[15]:= {Names["a$*"], Names["b$*"]} >> >> Out[15]= {{}, {"b$69", "b$77", "b$79", "b$81", "b$84", "b$86", "b$88", >> "b$90", "b$92", "b$94"}} >> >> >> Shouldn't the function Module treat the symbol "b[1]" as local too? >> Is this an expected or unexpected result? >> >> Regards, >> Marcelo Mayall >> >> > > > > -- > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.5.516 / Virus Database: 269.17.13/1213 - Release Date: 1/7/2008 > 9:14 AM > >
- References:
- Re: Module Behavior
- From: Jens-Peer Kuska <kuska@informatik.uni-leipzig.de>
- Re: Module Behavior