MathGroup Archive 1999

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

Search the Archive

Re: [Q] Thread[] and Hold[]


Thread without the second argument threads over lists. With the second
argument it threads over expressions with head second argument.

Documentation says:
 Thread[f[args], h] threads f over any objects with head h that appear in
args.

Thus Thread[f[h[a],h[b],h[c]] returns h[f[a, b, c]].

In your case f is List and h is Hold.

Kevin Jaffe <kj0 at mailcity.com> wrote in message
news:7n142g$bft at smc.vnet.net...
> 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
> .
>




  • Prev by Date: Re: Slow Version 4 Front End
  • Next by Date: Re: Slow Version 4 Front End
  • Previous by thread: Re: [Q] Thread[] and Hold[]
  • Next by thread: InputStream in version 3 vs version 4