Re: Using substitution rules to define a function

*To*: mathgroup at yoda.physics.unc.edu*Subject*: Re: Using substitution rules to define a function*From*: "Dr A. Hayes" <hay at leicester.ac.uk>*Date*: Fri, 1 Apr 1994 10:47:25 +0100 (BST)

Jean: Here is a simplified version of your problem and a solution to it. PROBLEM In[44]:= sol = {{x->w},{x->-w}} Out[44]= {{x -> w}, {x -> -w}} In[45]:= f[w_] := sol[[1,1,2]]; In[46]:= f[t] Out[46]= w SOLUTION Use Set instead of SetDelayed: In[47]:= f[w_] = sol[[1,1,2]]; In[48]:= f[x] Out[48]= x EXPLANATION With In[49]:= f[w_] := sol[[1,1,2]]; the rule stored is In[50]:= ?f Global`f f[w_] := sol[[1,1,2]] (unevaluated right side) so when f[x] there is no w for the slot w_ to relate to as a place to substitute x for w. In[51]:= TracePrint[f[x]] f[x] f x sol[[1,1,2]] Part sol {{x -> w}, {x -> -w}} 1 1 2 {{x -> w}, {x -> -w}}[[1,1,2]] w Out[51]= w But with In[52]:= f[w_] = sol[[1,1,2]]; the rule stored is In[53]:= ?f Global`f f[w_] = w and the evaluation process is In[54]:= TracePrint[f[x]] f[x] f x x Out[54]= x Allan Hayes hay at le.ac.uk