Re: Working in Modules

*To*: mathgroup at smc.vnet.net*Subject*: [mg15913] Re: [mg15860] Working in Modules*From*: Andrzej Kozlowski <andrzej at tuins.ac.jp>*Date*: Wed, 17 Feb 1999 23:33:51 -0500*Sender*: owner-wri-mathgroup at wolfram.com

On Fri, Feb 12, 1999, Dr D McK Paul <phrje at mimosa.csv.warwick.ac.uk> wrote: >This is my third attempt to post this question. No idea why it doesnt >work. I'm not an expert in Mathematica and would appreciate comments on >why init1 returns a list with all zeros replaced by -1, but init does >not. Its probably very simple but its confused me. > >Don > >init[n_Integer]:=Module[ > {s=Table[Random[Integer],{n n}]}, > s/.{0->-1}; > Partition[s,n] > ] > >init1[n_Integer]:=Module[ > {s=Table[Random[Integer],{n n}]}, > s/.{0->-1} > ] > > >-- > >Prof. Don McKenzie Paul tel. (1203) 523603 Department of >Physics fax. (1203) 692016 University of Warwick >email phrje at csv.warwick.ac.uk COVENTRY CV4 7AL >UK >-- >****************************************************** Professor Don >McKenzie Paul >Department of Physics >University of Warwick Yes, it is indeed very simple and at the same time confusing. All you need to do with your init function is to replace it by the following code: In[10]:= init[n_Integer]:=Module[ {s=Table[Random[Integer],{n n}]}, s=s/.{0->-1}; Partition[s,n] ] You see, your original code for init does not change the value of s at all! It computes s/.{0->-1} but does nothing with it! On the other hand init1 also does not change the value of s, but it does return s/.{0->-1} which is of course what you wanted. Andrzej Kozlowski Toyama International University JAPAN http://sigma.tuins.ac.jp/ http://eri2.tuins.ac.jp/ Andrzej Kozlowski Toyama International University JAPAN http://sigma.tuins.ac.jp/ http://eri2.tuins.ac.jp/