DMUG-Archiv 2009

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: SameQ[] threaded

Hallo & Frohe Ostern

statt also Eier zu suchen schreibtst Du seltsame Code, wieso nimmst Du nicht

dD[x_Symbol] := Or @@ (SameQ[x, #] & /@ {X1, X2, X3, X4})

was viel einfacher und logischer als

cD[x_Symbol] := Or @@ Thread[SameQ[Table[x, {4}], {X1, X2, X3, X4}]]

ist.

Weil nämlich SameQ[] nicht wartet bis es etwas tun kann wie Equal[] passiert
in Deinem seltsame Code das folgende, erst wird
Table[x, {4}] ausgewertet, das gibt bei cD[X1] {X1,X1,X1,X1}
dann steht da
{X1,X1,X1,X1}==={X1, X2, X3, X4}

und weil SameQ[] nicht wartet sondern gleich heraus findet das
beide Ausdrücken nicht das selbe sind, ist das False, da hilft auch kein
Thread[] mehr.

Gruss
 Jens



Udo und Susanne Krause wrote:
Hallo allerseits,

In[76]:= cD[x_Symbol] :=
 Or @@ Thread[SameQ[Table[x, {4}], {X1, X2, X3, X4}]]

In[90]:= cD[X1]
Out[90]= False

Erstaunlich.

In[89]:= Or @@ Thread[SameQ[Table[X2, {4}], {X1, X2, X3, X4}]]
Out[89]= False

Erstaunlicher.

In[88]:= SameQ[X2, X2]
Out[88]= True

Richtig, aber am erstaunlichsten, weil Mma 7.0.1 zuvor anders (i.e. falsch) entschied.

In[93]:= Head[X2]
Out[93]= Symbol

Frohe Ostern
Udo.





Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html