Re: confusion about Thread[]
- To: mathgroup at smc.vnet.net
- Subject: [mg56068] Re: [mg56007] confusion about Thread[]
- From: yehuda ben-shimol <bsyehuda at gmail.com>
- Date: Thu, 14 Apr 2005 08:56:36 -0400 (EDT)
- References: <200504130510.BAA09580@smc.vnet.net>
- Reply-to: yehuda ben-shimol <bsyehuda at gmail.com>
- Sender: owner-wri-mathgroup at wolfram.com
As I see it, your last expression uses two heads, one for the Or and one for the And fuctions. Thread is planned to work with a single head, and this is why it is working with a gereral f[]. yehuda On 4/13/05, Torsten Coym <torsten.coym at eas.iis.fraunhofer.de> wrote: > Hi group, > > given three lists > > wLst = {w1, w2, w3} > zLst = {z1, z2, z3} > cLst = {c1, c2, c3} > > with each element representing a boolean value I want to calculate a > list of the same function applied to the corresponding elements of wLst, > zLst, cLst respectively. While the expression > > Thread[Thread[wLst && zLst] || Thread[wLst && cLst] || > Thread[zLst && cLst]] > > {(w1 && z1) || (w1 && c1) || (z1 && c1), (w2 && z2) || (w2 && c2) || > (z2 && c2), (w3 && z3) || (w3 && c3) || (z3 && c3)} > > does exactly what I want, I wonder why the following approach using a > pure function with three input arguments and a single call of Thread[] > does not give the desired result: > > Thread[((#1 && #2) || (#1 && #3) || (#2 && #3) & )[wLst, zLst, cLst]] > > ({w1, w2, w3} && {z1, z2, z3}) || ({w1, w2, w3} && {c1, c2, c3}) || > ({z1, z2, z3} && {c1, c2, c3}) > > although > > ((#1 && #2) || (#1 && #3) || (#2 && #3) & )[w1, z1, c1] > > (w1 && z1) || (w1 && c1) || (z1 && c1) > > implements the desired logical expression and > > Thread[f[wLst, zLst, cLst]] > > {f[w1, z1, c1], f[w2, z2, c2], f[w3, z3, c3]} > > works the way I expect it. > > It seems I am a bit disconnected here ... > > Torsten > >
- References:
- confusion about Thread[]
- From: Torsten Coym <torsten.coym@eas.iis.fraunhofer.de>
- confusion about Thread[]