Re: Re: Is this a bug?

*To*: mathgroup at smc.vnet.net*Subject*: [mg13485] Re: Re: Is this a bug?*From*: "Allan Hayes" <hay at haystack.demon.cc.uk>*Date*: Sun, 26 Jul 1998 02:33:44 -0400*References*: <6p97ac$b5u@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

jfreeze at lexmark.com wrote in message <6p97ac$b5u at smc.vnet.net>... >Thanks for all of the responses. My original question was (basically) >why does >If[True, Evaluate[x=5], Evaluate[y=5]] give >{x,y} as {5,5}. >It was explained by several people that the reason is that Evaluate >overides HoldRest. >Nevertheless, it seems to me that expressions not returned from If >should not be executed, >regardless if Evaluate is used. Jim: That would rule out using If to make assignments. >I am looking for a solution to >the following >(seeing that If will not work now): > >If[ test, Evaluate[ToExpression["valid statement"]], >Evaluate[ToExpression["invalid statement"]]] > >What this statement does it to test for validity of a string before >converting >it to an expression. >Since If executes all its arguments, regardless of test, can someone >suggest a >method accomplish this task? Depending on what test is you may need to convert the string to an expression in order to test its validity. Subject to that, what about, something like If[ test, ToExpression["valid statement"], ToExpression["invalid statement"], ToExpression["undecided statement"]] Could you give a more explit example please? In particular, do you need ToExpression? Is "invalid expression" standing in for something? I ask because of ToExpression["invalid statement"]//FullForm Out[254]//FullForm= Times[invalid,statement] ------------------------------------------------------------- Allan Hayes Training and Consulting Leicester UK http://www.haystack.demon.co.uk hay at haystack.demon.co.uk voice: +44 (0)116 271 4198 fax: +44(0)116 271 8642