confusion about Thread[]
- To: mathgroup at smc.vnet.net
- Subject: [mg56007] confusion about Thread[]
- From: Torsten Coym <torsten.coym at eas.iis.fraunhofer.de>
- Date: Wed, 13 Apr 2005 01:10:46 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
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
- Follow-Ups:
- Re: confusion about Thread[]
- From: yehuda ben-shimol <bsyehuda@gmail.com>
- Re: confusion about Thread[]