Rule and Module not working together
- To: mathgroup at smc.vnet.net
- Subject: [mg77864] Rule and Module not working together
- From: Steven Siew <stevensiew2 at gmail.com>
- Date: Mon, 18 Jun 2007 07:07:06 -0400 (EDT)
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. 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[];
- Follow-Ups:
- Re: Rule and Module not working together
- From: Carl Woll <carlw@wolfram.com>
- Re: Rule and Module not working together