Re: [Q] Thread[] and Hold[]
- To: mathgroup at smc.vnet.net
- Subject: [mg18803] Re: [mg18785] [Q] Thread[] and Hold[]
- From: "Richard Finley" <rfinley at medicine.umsmed.edu>
- Date: Thu, 22 Jul 1999 08:19:23 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Kevin, It seems to make sense to me given the definition of Thread. In essence, Thread[{Hold[a],Hold[b],Hold[c]},Hold] will thread the List function over the arguments that have the head Hold...namely a,b,and c so you end up with Hold[{a,b,c}]. It is probably more obvious if you use a generic function rather than List....for example: Thread[f[Hold[a],Hold[b],Hold[c]],Hold] which will then give the result: Hold[f[a,b,c]] Now just imagine substituting List for f and you will see what is happening. Hope that helps...RF >>> "Kevin Jaffe" <kj0 at mailcity.com> 07/19/99 11:33PM >>> to comp.soft-sys.math.mathematica, I learned a neat, but rather puzzling, trick: In[4]:= Thread[Hold[{a,b,c}]] (* This I understand *) Out[4]= {Hold[a], Hold[b], Hold[c]} In[5]:= Thread[%, Hold] (* This baffles me *) Out[5]= Hold[{a, b, c}] I can't explain why the form in [5] would be the inverse of the form in [4], but be that as it may, with this maneuver one can do nifty things like: In[16]:= Thread[{Hold[1 + 1], Hold[3^2], Hold[3*6]}, Hold] 2 Out[16]= Hold[{1 + 1, 3 , 3 6}] Neither under Thread nor Hold could I find any explanation in the Mathematica Book for the behavior in [5]. Does anybody know an explanation for it? Thanks, KJ Get your FREE Email at http://mailcity.lycos.com Get your PERSONALIZED START PAGE at http://my.lycos.com