MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
> 
> 



  • Prev by Date: Re: Variant of inner Product ...
  • Next by Date: Re: Variant of inner Product ...
  • Previous by thread: Re: named pattern variable scoped as global, should be local
  • Next by thread: Re: named pattern variable scoped as global, should be local