Re: Thread and MapThread
- To: mathgroup at smc.vnet.net
- Subject: [mg29873] Re: [mg29868] Thread and MapThread
- From: BobHanlon at aol.com
- Date: Sun, 15 Jul 2001 00:59:00 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 2001/7/14 1:58:47 AM, djmp at earthlink.net writes: >Here is a function: > >ftest[x_, y_] := {f1[x], f2[y]} > >Why does the following work... > >MapThread[ftest, {{x1, x2, x3}, {y1, y2, y3}}] >{{f1[x1], f2[y1]}, {f1[x2], f2[y2]}, {f1[x3], f2[y3]}} > >...but the following does not work. > >Thread[ftest[{x1, x2, x3}, {y1, y2, y3}]] >{f1[{x1, x2, x3}], f2[{y1, y2, y3}]} > In your second case, when the argument to Thread is evaluated before Thread is applied, it is a List (the result) on which Thread has no effect. You may want to make ftest Listable in which case the effects of MapThread occur automatically. SetAttributes[ftest, Listable] ftest[x_, y_] := {f1[x], f2[y]}; MapThread[ftest, {{x1, x2, x3}, {y1, y2, y3}}] == ftest[{x1, x2, x3}, {y1, y2, y3}] True Bob Hanlon Chantilly, VA USA