Re: ReplaceAll in If Statement

*To*: mathgroup at smc.vnet.net*Subject*: [mg19472] Re: [mg19448] ReplaceAll in If Statement*From*: "Mark E. Harder" <harderm at ucs.orst.edu>*Date*: Sat, 28 Aug 1999 15:53:03 -0400*Sender*: owner-wri-mathgroup at wolfram.com

Tom; You have inadvertently (I think) nested your rule too deeply by making opList a list, then enclosing it in {} in the rule application. While a/. {(a->True)} becomes a=True, a/.{{a->True}} evaluates to neither t nor f, so the If[] returns z=3. The following is what you want: In[38]:= opList=(a->True); test[opts___]:=Module[{}, If[a /. {opts}, z=1, z=2, z=3]; {a, z} /. {opts}] test[opList] Out[39]= {True,1} -mark -----Original Message----- From: Tom Compton <comptont at concentric.net> To: mathgroup at smc.vnet.net Subject: [mg19472] [mg19448] ReplaceAll in If Statement >In the following sequence I expected z to evaluate to 1 in the >Module. It appears that the test in the module does not >evaluate to either True or False. I don't understand why. >Can anyone explain? > >In[1]:= >opList={a->True}; > >In[2]:= >test[opts___]:=Module[{}, >If[a /. {opts}, z=1, z=2, z=3]; >{a, z} /. {opts}] > >In[3]:= >test[opList] >Out[3]= >{{True,3}} > > > >Tom Compton > > >