MathGroup Archive 1998

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

Search the Archive

RE: An operator called-- LocalRule


Allan Hayes had two remarks;
|
|The last Hold seems not to be needed - and Cases needs the option 
|Heads->True: 
|
|
Allan,
When you modified my program you took out the part If[q==={}, ........]
Without that the program doesn't work right when the left hand side has
no patterns.  I think the code below incorporates you suggestions
without problem.


In[1]:=
LocalRule=RightArrow;
SetAttributes[RightArrow,HoldRest];

RightArrow[lhs_,rhs_]:=Module[{q},
q=Cases[lhs,_Pattern,{0,Infinity}, Heads->True];
If[q==={},(lhs:>Evaluate at rhs),(
  q=Extract[#,1,Hold]& /@q;
  q=Thread[q,Hold];
  Block@@Join[q,Hold[lhs:>Evaluate at rhs] ] )]]

________________

Now the following will work.

In[2]:=
Clear[expr,x,a];


In[3]:=
LocalRule[expr,x+a^2]

Out[3]=
expr :> x+a^2

_______________
Ted


  • Prev by Date: An operator called-- LocalSet
  • Next by Date: Re: MacOS vs. Windows PC for Mathematica?
  • Previous by thread: An operator called-- LocalRule
  • Next by thread: A Most Annoying Problem