Re: "Programming With Mathematica" Exercise help

*To*: mathgroup at smc.vnet.net*Subject*: [mg130456] Re: "Programming With Mathematica" Exercise help*From*: "Hans Michel" <hmichel at cox.net>*Date*: Fri, 12 Apr 2013 02:17:25 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: l-mathgroup@wolfram.com*Delivered-to*: mathgroup-newout@smc.vnet.net*Delivered-to*: mathgroup-newsend@smc.vnet.net*References*: <20130411081349.074EF6B4E@smc.vnet.net>

Darrell I put most expressions in FullForm or close to FullForm The following with no Hold In[1]:= Clear[z,a]; Set[z,11]; Set[a,9]; ReplaceAll[z+3,Rule[z,a]] Out[4]= 14 Now with Hold In[5]:= Clear[z,a]; Hold[Set[z,11]]; Set[a,9]; ReplaceAll[z+3,Rule[z,a]] Out[8]= 12 As you pointed out in the clipping of the exercise question, "use the Hold .. in the compound expression .. value of 12". The solution is in the question. So I put a Hold on z where z is being initially Set in the compound expression. Hans -----Original Message----- From: plank.in.sequim at gmail.com [mailto:plank.in.sequim at gmail.com] Sent: Thursday, April 11, 2013 3:14 AM To: mathgroup at smc.vnet.net Subject: [mg130456] "Programming With Mathematica" Exercise help I'm loving Paul Wellin's book "Programming with Mathematica: An Introduction" and am trying to diligently do all the exercises. Most of them have answers in the back but I'm stuck on Section 4.2, Exercise 2 and there's no answer given. It gives the following Mathematica code: z = 11; a = 9; z + 3 /. z -> a 14 So "z+3" is being evaluated to 14 and then the substitution has no effect. He asks how to "use the Hold function in the compound expression to obtain a value of 12". I don't seem to be able to get this to work. My original thought was to hold z+3, but then the z in the replacement part gets evaluated so the replacement is actually 11->3 which doesn't match in the held z+3 expression. In fact, if you replace "z+3" with Hold[11+3] then you'll end up with Hold[9+3]. Curiously, this works differently if you use replace. In: Replace[Hold[11+3],11->9] Out: Replace[Hold[11+3],11->9] In: Hold[11+3]/.11->9 out: Hold[9+3] I thought these two were supposed to be equivalent so I'm a bit confused here. In any event, I've tried all the commonsense ideas I've had and then spent some time flailing about randomly with Hold's but nothing seems to work correctly. Can anybody help me understand this? Thanks! Darrell

**References**:**"Programming With Mathematica" Exercise help***From:*plank.in.sequim@gmail.com