MathGroup Archive 2005

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

Search the Archive

Re: Q: Thread behaviour

  • To: mathgroup at smc.vnet.net
  • Subject: [mg57956] Re: [mg57933] Q: Thread behaviour
  • From: Andrzej Kozlowski <andrzej at akikoz.net>
  • Date: Tue, 14 Jun 2005 05:10:20 -0400 (EDT)
  • References: <200506130950.FAA29336@smc.vnet.net> <8F02341B-0E9C-4E43-8C65-12FB52A7ACC0@akikoz.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On 13 Jun 2005, at 19:43, Andrzej Kozlowski wrote:

>
> On 13 Jun 2005, at 18:50, Dick Barends wrote:
>
>
>> Hallo,
>>
>> k[x_,y_] = x^2+y^2
>> Thread[k[a+b,c d],Plus]
>> gives: (a+b)^2+c^2 d^2
>> I would expect: a^2 + (c d)^2 + b^2 + (c d)^2 (See below)
>>
>> -----------------
>> When I use:
>> Thread[m[a+b, c d],Plus]
>> gives: m[a, c d] + m[b, c d]
>> This is what should happen.
>>
>> What gives "m" a different solution than "k"????
>>
>> I hoop some of you will answer:-)
>>
>> greetings
>> Dick
>>
>>
>>
>
>
>
> Compare
>
> In[39]:=
> Thread[k[a + b, c*d], Plus]
>
>
> (a + b)^2 + c^2*d^2
>
> with
>
>
> Thread[Unevaluated[k[a + b, c*d]], Plus]
>
>
> a^2 + b^2 + 2*c^2*d^2
>
> Alternatively, give k the attribute HoldAll
>
>
> SetAttributes[k, HoldAll]
>
>
> Thread[k[a + b, c*d], Plus]
>
>
> (a + b)^2 + c^2*d^2
>
> Andrzej Kozlowski
>
> Chiba, Japan
>


Of course giving k the attribute HoldAll does not help since the  
point is that Thread evaluates it"s arguemnts not that k does. (I  
really should have looked at the answer I got).

So you could give Thread the HoldALl (or HoldFirst) attribute:

SetAttributes[Thread, HoldAll]


Thread[k[a + b, c*d], Plus]


a^2 + b^2 + 2*c^2*d^2

However, it is not a good idea in general to modify built-in function  
in this way so it is much better just to use Unevaluated as in my  
first example.

Andrzej Kozlowski



  • Prev by Date: Re: Exporting mathematica equations into MathType
  • Next by Date: Re: Peculiar behaviour of Mathematica code
  • Previous by thread: Re: Q: Thread behaviour
  • Next by thread: Re: Q: Thread behaviour