MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: I'm puzzled by drastic truncation of y-axis in DateListLogPlot
  • Next by Date: Re: original meaning of System` functions
  • Previous by thread: Re: original meaning of System` functions
  • Next by thread: Re: original meaning of System` functions