Re: original meaning of System` functions
- To: mathgroup at smc.vnet.net
- Subject: [mg115409] Re: original meaning of System` functions
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Mon, 10 Jan 2011 02:38:59 -0500 (EST)
I suppose you could export brief "shell" functions that call the ones you want to hide (which you would not export). Bobby On Sun, 09 Jan 2011 01:20:06 -0600, hemmecke <hemmecke at gmail.com> wrote: > If it is impossible to access the original meaning of Mathematica > System` functions, > it is also impossible to truely protect implementation details of a > package. > > Or is there a reliable way to hide the source code of a package? > > Suppose someone has redefined > > Unprotect[SetAttributes]; SetAttributes[_,_]:={} > Attributes[SetAttributes] = {Protected, Locked} > > before loading the package code. The source code would be available > just by typing > > ??F > > where F is an exported function of the package. > > Ralf > > On 01/06/2011 05:50 PM, Daniel Lichtblau wrote: >> Ralf Hemmecke 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 >> >> I may be misunderstanding the question, but I will mention that many of >> the System` function DownValues are implemented in C code. So you would >> not be able to access the actual definitions, if that is what you are >> seeking. >> >> If it is just that you want a way to "restore" those definitions for >> usage, that might be done within Block but not if you Lock/Protect the >> new definitions. Or at least not in a way I can see; this is a bit out >> of my usual area of coding. >> >> Daniel >> >> >>> 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 >>>> >>>> >>> >> > -- DrMajorBob at yahoo.com