Trouble redefining Protected symbols and system functions [duplicate]
问题 This question already has an answer here : Why do I have to evaluate this twice? (1 answer) Closed 2 years ago . Found trying to use the usual trick to redefine GaussianFilter[ ]: out[x_]:=Print["(*"<>ToString@x<>"*)"]; (* Redefining Circle[ ] works as expected*) Unprotect[Circle]; Circle[a_,args__]:= Block[{$i=True},{"Circle",a}]/;!TrueQ[$i]; Protect[Circle]; out@Circle[{0,1},1,{0,2Pi}] (*{Circle, {0, 1}}*) (* Redefining GaussianFilter[ ] does not*) Unprotect[GaussianFilter]; GaussianFilter