I cannot figure out why I have to evaluate this twice (in Mathematica 7) for the assignment to take.

First evaluation:

Unprotect[Rule];
Attributes[Rule]
pp = Plot | LogLinearPlot | ListPlot | ParametricPlot3D;
(h : pp)[True -> False] ^:= Print["Irrelevant data"]

(*

Out[2]= {SequenceHold}

During evaluation of In[1]:= UpSetDelayed::write: Tag Rule in (h:Plot|LogLinearPlot|ListPlot|ParametricPlot3D)[True->False] is Protected. >>

Out[4]= $Failed

*)

As can be seen from Out[2]= {SequenceHold}, Unprotect[Rule] worked, yet the error message indicates otherwise. If I evaluate the cell a second time, the assignment takes and no error is generated.

Why does this happen?

Edit
Report