Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

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

Search the Archive

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[];



  • Prev by Date: Re: Mathematica 6 and normal distribution?
  • Next by Date: Re: question
  • Previous by thread: Mathematica 6 on Linux Crashed Down
  • Next by thread: Re: Rule and Module not working together