Re: original meaning of System` functions
- To: mathgroup at smc.vnet.net
- Subject: [mg115283] Re: original meaning of System` functions
- From: Leonid Shifrin <lshifr at gmail.com>
- Date: Thu, 6 Jan 2011 02:05:41 -0500 (EST)
Ralf, Once you Protect and Lock the symbol, I am not aware of any way to do what you want. System-level DownValues and other ...Values are not exposed to the top level. Neither can you return to the original behavior if the function has been first modified by the user and then Locked. I don't claim this is totally impossible, I just don't know any way to achieve this. Perhaps you will get other, more informative responses. Regards, Leonid On Wed, Jan 5, 2011 at 3:42 PM, Ralf Hemmecke <hemmecke at gmail.com> wrote: > True, it looks impossible, but maybe there is still a way to get > System`ClearAll in its original Mathematica meaning. I simply want to get > access to the builtin behaviour of the "function". Possible or impossible? > > Note, I am not asking for user-defined functions, but rather for modified > system-defined constructs. Deep inside the Mathematica kernel, the original > meaning must have been hardcoded. How to access that? > > Ralf > > > On 01/05/2011 01:12 PM, Leonid Shifrin wrote: > >> Hi, >> >> Since you both Protected and Locked these commands, it looks like you >> made all the steps to ensure that their definitions can not be altered >> in the same session, and thus their original definitions can not be >> inspected or used (at least AFAIK). Given the nature of these commands, >> I wonder whether this confirmation of impossibility to undo these >> changes was what you were actually after :) >> >> Regards, >> Leonid >> >> >> On Tue, Jan 4, 2011 at 3:51 PM, hemmecke <hemmecke at gmail.com >> <mailto:hemmecke at gmail.com>> wrote: >> >> Is there any way to call the original Mathematica behaviour of a >> function from the System context in case it has previously been >> unprotected and redefined? >> >> For example, how can I access the original meaning of ClearAll after >> >> Unprotect[ClearAll,Clear]; ClearAll[__]:=True;Clear[__]:=True; >> >> ? >> >> I just temporarily (i.e. in some safe environment) want to access the >> system defined meaning, but actually don't want to undo any modified >> behaviour. >> >> Ralf >> >> In[1]:= Unprotect[ClearAll,Clear]; ClearAll[__]:=True;Clear[__]:=True; >> >> In[2]:= SetAttributes[ClearAll,{Protected, Locked}] >> >> In[3]:= SetAttributes[Clear,{Protected, Locked}] >> >> In[4]:= a[x_]:=x^3 >> >> In[5]:= ClearAll[a] >> >> Out[5]= True >> >> In[6]:= ClearAll[ClearAll] >> >> Out[6]= True >> >> In[7]:= System`ClearAll[a] >> >> Out[7]= True >> >> In[8]:= ??a >> Global`a >> >> a[x_] := x^3 >> >> >>