One of my colleagues reminded me off-list that some messages have linear syntax
embedded in them which makes it more difficult to reliably string-process them.
I think that's part of why your messages are under-counting, too. It may, for
example, be missing functions whose usage messages include subscripts (like many
of the plotting functions).
He suggested using SyntaxInformation[], which is probably still not 100%
reliable, but much easier than trying to slice apart linear syntax and more
reliable than your function which does not.
I was probably influenced in thinking to do this, however, by the fact that this
is very similar to what the menu item "Complete Selection" does. The code for
that is in the function FE`FT, which is pretty trivial to inspect if you want to
replicate what it does. FE`FT, however, selects only those functions whose
usage messages begin with a FullForm representation of the message, so it
doesn't work, for example, on functions like Plus and Times.
Sincerely,
John Fultz
jfultz at wolfram.com
User Interface Group
Wolfram Research, Inc.
On Sun, 15 Nov 2009 05:53:31 -0500 (EST), Nasser M. Abbasi wrote:
> I've update my Mathematica history table with a new listing of
> Mathematica 7 functions (not just the symbols).
> These are anything in Mathematica System context which has the form
> name[...]
>
> I want to thank John Fultz for his hint in another posting in this
> newsgroup
> to use the Usage message from ? and look for anything that starts with
> this
> pattern.
>
> I obtain 1869 functions.
>
> Since what I find is somewhat less what it is supposed to be (close to
> 2,500) according to WRI blog here
>=
http://blog.wolfram.com/2008/11/18/surprise-mathematica-70-released-today/
>
> I could only suggest as one of the following for this difference:
>
> 1. I have a bug in my processing of the usage messages and parsing it.
>
> 2. There are more functions that have a usage message which do not follow
> the patten which starts by name[..]. Notice that the "name" must start at
> the first position of the line. If it does it, the line is not matched.
>
> 3. I count the function one time, even though its usage message can list
> the
> function more than one time due to different number of arguments it can be
> called with. (for example ?BarChart will show 3 usage message, I count
> this
> one time ofcourse).
>
> I have put the complete listing, and described how I did this in the
> notebook in the table page here
> http://12000.org/my_notes/compare_mathematica/index.htm
>
> Look for the column which says "Number of functions and Listing of
> Mathematica functions generated using the message usage method"
>
> If you think there is problem with how I am doing this, please let me
> know,
> and I will fix it.
>
> Too many functions, too little time !
>
> --Nasser