Re: named pattern variable scoped as global, should be local
- To: mathgroup at smc.vnet.net
- Subject: [mg56727] Re: [mg56696] named pattern variable scoped as global, should be local
- From: "Ingolf Dahl" <ingolf.dahl at telia.com>
- Date: Thu, 5 May 2005 06:01:11 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
I have also fallen into this trap. To avoid this effect, use (as a rule) RuleDelayed (:>) instead of Rule (->) whenever patterns are used for replacements. x =14; Module[{x},{1, 2, 3} /. x_ :> 2x] returns {2, 4, 6}. Does anyone know any case where RuleDelayed creates unwanted effects in similar situations? Ingolf Dahl Sweden > -----Original Message----- > From: leenewman at gmail.com [mailto:leenewman at gmail.com] To: mathgroup at smc.vnet.net > Sent: den 4 maj 2005 06:33 > Subject: [mg56727] [mg56696] named pattern variable scoped as global, > should be local > > When using a named pattern variable within a module, it > should be scoped locally within the pattern. However, this > does not seem to work as advertised. For example, shouldn't > the pattern variable x in the statements below be local to > the pattern? Does anyone know whether this is a bug, or > whether I am just missing something about the usage of > variables in patterns/condition constructs? > > (* this returns 14! *) > x = 7; > Module[{x},{1, 2, 3} /. x_ -> 2x]; > > (* this returns {2,4,6}, assuming q is not globally defined. > *) Remove[q]; Module[{q},{1, 2, 3} /. q_ -> 2q]; > > > Lee > >