Re: Rule and Module not working together

*To*: mathgroup at smc.vnet.net*Subject*: [mg77920] Re: [mg77864] Rule and Module not working together*From*: Carl Woll <carlw at wolfram.com>*Date*: Tue, 19 Jun 2007 07:01:16 -0400 (EDT)*References*: <200706181107.HAA19846@smc.vnet.net>

Steven Siew wrote: >On Mathematica 5.2, I tried to write a function which applies the rule >Log[A_] + Log[B_] -> Log[A * B] but somehow it does not work as I >expected. > > Use Log[A_] + Log[B_] :> Log[A B] instead. On another note, there is no need to use Return in your code below. The last expression in a Module is automatically returned. Carl Woll Wolfram Research >Instead of Log[f] + Log[g] becoming Log[f * g], I get the result of >Log[666 * f] even though I have marked both A and B as private >variables. > >Can anyone help? I'm sure I made a big mistake somewhere in my >understanding of Mathematica. > > > >In[1]:= AppendTo[$Echo,"stdout"] >Out[1]= {stdout} > >In[2]:= (* Write your mathematica code below *) > >In[3]:= If[Length[Names["Global`*"]] > 0, Remove["Global`*"]] > >In[4]:= Off[General::spell, General::spell1] > >In[5]:= myfunc[x_] := Module[{s, A, B}, > s = {Log[A_] + Log[B_] -> Log[A*B]}; Return[x /. s]] > >In[6]:= ? myfunc >Global`myfunc > >myfunc[x_] := Module[{s, A, B}, s = {Log[A_] + Log[B_] -> Log[A*B]}; > Return[x /. s]] > >In[7]:= B = 666; > >In[8]:= myfunc[Log[f] + Log[g]] > >Out[8]= Log[666 f] > >In[9]:= myfunc[Log[4] + Log[5]] > >Out[9]= Log[2664] > >In[10]:= (* End of mathematica code *) > >In[11]:= Quit[]; > > >

**References**:**Rule and Module not working together***From:*Steven Siew <stevensiew2@gmail.com>