MathGroup Archive 2006

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

Search the Archive

Re: undocumented

  • To: mathgroup at smc.vnet.net
  • Subject: [mg70148] Re: [mg70109] undocumented
  • From: "Chris Chiasson" <chris at chiasson.name>
  • Date: Thu, 5 Oct 2006 03:33:17 -0400 (EDT)
  • References: <200610040958.FAA07148@smc.vnet.net>

A little more characterization can be added. It is possible to detect
symbols that have a hyperlink to the help browser and those that do
not. It is also possible to detect symbols which are part of the set
of default options (of other symbols) as well as symbols which have
the word "option" in their description. These could be loosely
considered option symbols.

It turns out that all messages which have a help browser hyperlink
also have a usage message (AFAIK).

There are 102 symbols with usage messages that are not option symbols
and that do not have reference hyperlinks.

There are 336 symbols without usage messages that are not option symbols.

In[1]:=
SessionTime[]
nameSet=Names["System`*"];
usageNames=
    Select[nameSet,
      ToExpression[#1,InputForm,
          Function[symb,StringQ@MessageName[Unevaluated[symb],"usage"],
            HoldFirst]]&];
opts=ToExpression[#1,InputForm,
          Function[symb,Options[Unevaluated[symb]],HoldFirst]]&/@nameSet;
defOptNames=
    Select[nameSet,
      ToExpression[#1,InputForm,
          Function[symb,!FreeQ[opts,Unevaluated[symb]],HoldFirst]]&];
descOptNames=
  Select[nameSet,
    ToExpression[#1,InputForm,
        Function[symb,
          Module[{usage=MessageName[Unevaluated[symb],"usage"]},
            StringQ@usage&&
              StringMatchQ[usage,___~~"option"~~___,IgnoreCase\[Rule]True]],
          HoldFirst]]&];refNames=
  Select[nameSet,!FreeQ[
          System`Dump`doinformation[#,System`Dump`generaterandomtag[],False,
            False,False],ButtonBox]&];
SessionTime[]

Out[1]=
0.4531250

Out[7]=
55.3281250

In[8]:=
Length@Intersection[refNames,Complement[nameSet,usageNames]]

Out[8]=
0

In[9]:=
Length@Intersection[usageNames,
    Complement[nameSet,Union[defOptNames,descOptNames,refNames]]]

Out[9]=
102

In[10]:=
Length@Complement[nameSet,Union[defOptNames,descOptNames,refNames,usageNames]]

Out[10]=
336

On 10/4/06, dimmechan at yahoo.com <dimmechan at yahoo.com> wrote:
> Hello.
> The following questions are not for a particular reasons.
> My queries just appeared after some recent posts of mine.
>
> $Version
> "5.2 for Microsoft Windows (June 20, 2005)"
>
> Consider the Built-in function ArgumentCountQ.
> This function is undocumented in the Help Broser.
>
> However,
>
> Information[ArgumentCountQ]
> "ArgumentCountQ[head, len, min, max] tests whether the number len of
> arguments of a function head is between min and max."
> Attributes[ArgumentCountQ] = {Protected, ReadProtected}
>
> My first question is where this definition of this Built -in function
> is stored and why it cannot be appeared in the Help Browser?
>
> Of course I have encountered and other functions exhibit this behavior
> likeTraceInternal
>
> Information["TraceInternal"]
> "TraceInternal is an option for Trace and related functions which, if
> True or False, specifies whether to trace evaluations of \
> expressions generated internally by Mathematica. The intermediate
> Automatic setting traces a selected set of internal \
> evaluations including Messages and sets or unsets of visible symbols."
> Attributes[TraceInternal] = {Protected}
>
> Consider now
>
> Information["InexactNumberQ"]
> System`InexactNumberQ
> Attributes[InexactNumberQ] = {Protected}
>
> and
>
> Options[FrameBox]
> (Information[Evaluate[#1[[1]]]] & ) /@ %;
> {BoxFrame -> True, BoxMargins -> {{0.4000000059604645,
> 0.4000000059604645}, {0.5, 0.5}}}
> "System`BoxFrame"
> Attributes[BoxFrame] = {Protected}
> "System`BoxMargins"
> Attributes[BoxMargins] = {Protected}
>
> It seems that InexactNumberQ and the options of FrameBox are
> undocumented.
> For the the first this is true.
> For the latter...to my surprise not.
>
> Just press the cursor next to BoxFrame for example and then press F1
> and you will see that you are gone to the desired documtation (as part
> of the
> FrontEnd documentation).
>
> How is this possible?
>
> Is it a way to get the "real" undocumented functions/symbols?
>
> I search (a little I must admit) the archives and I found the following
> command
>
> Block[{$Urgent = {}}, Select[Names["System`*"], (#1;
> !StringQ[MessageName @@ Append[ToHeldExpression[#1], "usage"]]) & ]]
>
> I get a list of almost 500 functions.
> These list includes just undocumented functions?
> If yes what is the reason of the existence of this
> situation?
>
> In old post of Ted Esrek I read that one reason was
> that some functions were not well tested but this
> was for the 3.0 version.
>
> If the answer in the last question is no and the
> returning list is a mix of undocumnated functions
> and functions that are obsolete how I can
> find just the undocumnated functions?
>
>
> Regards
>
>


-- 
http://chris.chiasson.name/


  • Prev by Date: Re: RE:Dual Core
  • Next by Date: Re: Algorithm in NDSolve and FindMinimum
  • Previous by thread: undocumented
  • Next by thread: On "Equilibrium points for..."