a dangerous feature of Module[]?

*To*: mathgroup at smc.vnet.net*Subject*: [mg57422] a dangerous feature of Module[]?*From*: Gennady Stupakov <stupakov at yahoo.com>*Date*: Fri, 27 May 2005 04:57:17 -0400 (EDT)*Reply-to*: Gennady Stupakov <stupakov at yahoo.com>*Sender*: owner-wri-mathgroup at wolfram.com

I've spent considerate time recently debugging my Mathematica code until I figured out that the problem is in a strange behaviour of the Module[] function. Here is a simple example that demonstrate this feature. I have a gloval variable x: In[1]:= x=3 Out[1]= 3 Now I define a module with local varibles x and f, call g, and get the expected result. The value of global variable x does not interfere with the local x, as expected. In[2]:= g:=Module[{x,f},f[x_]:=x;f[5]] In[3]:= g Out[3]= 5 However, if I use Set (=) instead of SetDelayed (:=) in the definition of my function f inside the module, the result will be different: In[4]:= h:=Module[{x,f},f[x_]=x;f[5]] In[5]:= h Out[5]= 3 In this case the Module ignores the fact that x is supposed to be a local variable, and for some reason uses the value of the global x inside the module. Can somebody explain me if this is an expected behaviour of the Module[]? I am using version 5.1 on a PC: In[7]:= $Version Out[7]= 5.1 for Microsoft Windows (October 25, 2004) Thanks. Gennady.

**Follow-Ups**:**Re: a dangerous feature of Module[]?***From:*Chris Chiasson <chris.chiasson@gmail.com>