Re: Re: Re: Set in Scan
- To: mathgroup at smc.vnet.net
- Subject: [mg22056] Re: [mg22008] Re: [mg21900] Re: [mg21856] Set in Scan
- From: Hartmut Wolf <hwolf at debis.com>
- Date: Fri, 11 Feb 2000 02:38:40 -0500 (EST)
- Organization: debis Systemhaus
- References: <200002100725.CAA05624@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Dear Tomas,
what I wrote this morning ....
Hartmut Wolf schrieb:
>
....
>
> Or the somewhat more obfuscated
>
> Scan[Evaluate,
> Scan[((#[[3]] = If[#[[3]] < 0.5, "-XXX-", "-YYY-"])&
> @Unevaluated[#])&,
> Unevaluated /@ Unevaluated[{v1, v2, v3}]]]
>
> no Hold attributes in. This even works when you replace the outer Scan
> (to get the replaced elements evaluated) by Map although the inner Scan
> doesn't return anything.
> I guess this is neither a bug nor any intended use (of Map), but a
> consequence of the requirement that repeated Scans should be possible.
> This example at least is an argument that they should!
>
.....was a little bit too "obfuscated" (to myself, I confess)
And what I had talked about that second Scan (or Map) is pure nonsense.
It simply does nothing, as I had explained before. I somehow tricked
myself into that error, having not restored {v1,v2,v3} after an
experimentation with Hold, tjaaa ...
In[1]:=
{v1, v2, v3} = {{0.308624, 0.0113816, 0.452114, 0.100156},
{0.368705, 0.44588, 0.878839, 0.736246},
{0.71764, 0.18652, 0.667573, 0.338795}};
In[2]:=
Scan[((#[[3]] = If[#[[3]] < 0.5, "-XXX-", "-YYY-"]) &@Unevaluated[#]) &,
Unevaluated /@ Unevaluated[{v1, v2, v3}]]
In[3]:= {v1, v2, v3}
Out[3]=
{{0.308624, 0.0113816, "-XXX-", 0.100156}, {0.368705, 0.44588, "-YYY-",
0.736246}, {0.71764, 0.18652, "-YYY-", 0.338795}}
Another possibility would be
In[4]:=
{v1, v2, v3} = {{0.308624, 0.0113816, 0.452114, 0.100156},
{0.368705, 0.44588, 0.878839, 0.736246},
{0.71764, 0.18652, 0.667573, 0.338795}};
In[5]:=
Scan[((#[[3]] = If[#[[3]] < 0.5, "-XXX-", "-YYY-"]) &[#]) &,
Unevaluated /@ Unevaluated /@ Unevaluated[{v1, v2, v3}]]
In[6]:= {v1, v2, v3}
Out[6]=
{{0.308624, 0.0113816, "-XXX-", 0.100156}, {0.368705, 0.44588, "-YYY-",
0.736246}, {0.71764, 0.18652, "-YYY-", 0.338795}}
Each application removes one level of "Unevaluated".
Kind regards, Hartmut
- References:
- Re: Re: Set in Scan
- From: "Tomas Garza" <tgarza@mail.internet.com.mx>
- Re: Re: Set in Scan