Re: named pattern variable scoped as global, should be local

*To*: mathgroup at smc.vnet.net*Subject*: [mg56720] Re: [mg56696] named pattern variable scoped as global, should be local*From*: Andrzej Kozlowski <akoz at mimuw.edu.pl>*Date*: Thu, 5 May 2005 06:01:06 -0400 (EDT)*References*: <200505040433.AAA06165@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

On 4 May 2005, at 13:33, leenewman at gmail.com wrote: > 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 > To me this indeed looks like a bug, but Mathematica's scoping is strange and it is sometimes hard to tell what is a bug and what is a part of the design. The reason why it looks to me like a bug is this: x=7; Module[{x,y=1},{1,2,3}/.x_->2 x y] {2,4,6} besides this "workaround" I can see two other choices: 1. Use RuleDelayed: x=7; Module[{x},{1,2,3}/.x_:>2x] {2,4,6} 2. Use Block instead of Module: Block[{x},{1,2,3}/.x_->2x] {2,4,6} Andrzej Kozlowski Chiba, Japan http://www.akikoz.net/andrzej/index.html http://www.mimuw.edu.pl/~akoz/

**Follow-Ups**:**Re: Re: named pattern variable scoped as global, should be local***From:*"Fred Simons" <f.h.simons@tue.nl>

**References**:**named pattern variable scoped as global, should be local***From:*leenewman@gmail.com