Re: Re: Mathematica skill level snippet(s)

*To*: mathgroup at smc.vnet.net*Subject*: [mg104902] Re: [mg104890] Re: Mathematica skill level snippet(s)*From*: John Fultz <jfultz at wolfram.com>*Date*: Fri, 13 Nov 2009 05:51:48 -0500 (EST)*Reply-to*: jfultz at wolfram.com

If I were to do this, I would do it by scavenging usage messages. The usage messages are written very systematically. I suspect, for example, the vast majority of usage messages (if not every single one) which begin with "<symbol> " (*i.e. followed by a space *) are options or other free names which aren't functions. On the other hand, every usage message that begins with... "<symbol>[" is guaranteed to be a function. But many symbols map to operator. For example, see the usage message for Plus, which is why searching for messages which *don't* match "<symbol> " is better than searching for symbols which match "<symbol>[". I did start to write a solution to do this, but there's a bit of HoldPattern magic and such that needs to be done and I was too busy to spend time getting it to work (I did have something kind of working, actually, but then accidentally quit my session w/o saving, and gave up because of the ten million other things on my to-do list). Sincerely, John Fultz jfultz at wolfram.com User Interface Group Wolfram Research, Inc. On Thu, 12 Nov 2009 06:07:46 -0500 (EST), Drago Ganic wrote: > Hi Nasser, > > I think there is no way except enumerating the symbols. Unfortunatly > Mathematica is lacking some attributes (like Command, Option etc.) or some > other mechanism (e.g. system tables) for providing those kind of > information. > > BR, > Drago > > > "Nasser M. Abbasi" <nma at 12000.org> wrote in message > news:hdbhn2$jol$1 at smc.vnet.net... > >> >> From: "John Fultz" <jfultz at wolfram.com> >> >> "Stephen Wolfram wrote a blog post which included a ListPlot of the >> function >> count from Mathematica's inception to version 7. >> >> http://blog.wolfram.com/2008/11/18/surprise-mathematica-70-released- >> today/ >> >> The plot is about a third of the way through the post. Note the number >> here is >> significantly below your number because you're counting all System` >> symbols, >> whereas he was counting System` *functions*. >> " >> >> Yes, I know about this blog (it is one of the references already on my >> page), and I actually remember spending sometime trying to find how did >> Dr >> Wolfram would have counted the number of functions, but I could not >> figure >> it out (the command used to generate the plot was not shown in the >> blog.) >> >> Do you know how to find how many of the Symbols are actually Functions >> such >> as Sin,Cos etc.. vs. say function options or other type of symbols? >> Since >> the Head of a Function is a Symbol itself I can't just look at the Head >> of >> each symbol to find out? >> >> In[6]:= Head[Sin] >> Out[6]= Symbol >> In[7]:= Head[Joined] >> Out[7]= Symbol >> >> If I filter by attribute, which I think may be the way to do it, then >> which >> set of attributes to use? Listable? gives only 264 >> >> Length[Select[Names["System`*"], MemberQ[Attributes[#1], Listable] & ]] >> 264 >> >> So, need more attributes which all apply to functions, then get a unique >> list out, then count it? But I do not know what all the attributes >> should >> be. >> >> If you know _please_ let me know, and I will add this information to >> the >> table. >> >> thanks >> --Nasser