Я не могу понять, почему я должен дважды это оценить (в Mathematica 7) для назначения.
Первая оценка:
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
*)
Как видно из Out[2]= {SequenceHold}
, Unprotect[Rule]
работал, но сообщение об ошибке указывает на другое. Если я буду оценивать ячейку во второй раз, присваивание принимает и не генерируется ошибка.
Почему это происходит?