2.7.13 Advanced Topic: Intercepting the Creation of New SymbolsMathematica creates a new symbol when you first enter a particular name. Sometimes it is useful to "intercept" the process of creating a new symbol. Mathematica provides several ways to do this.
| On[General::newsym] | print a message whenever a new symbol is created | | Off[General::newsym] | switch off the message printed when new symbols are created |
Printing a message when new symbols are created. | This tells Mathematica to print a message whenever a new symbol is created. | |
In[1]:=
On[General::newsym]
|
|
| Mathematica now prints a message about each new symbol that it creates. | |
Out[2]=
|
|
| This switches off the message. | |
In[3]:=
Off[General::newsym]
|
|
Generating a message when Mathematica creates a new symbol is often a good way to catch typing mistakes. Mathematica itself cannot tell the difference between an intentionally new name, and a misspelling of a name it already knows. But by reporting all new names it encounters, Mathematica allows you to see whether any of them are mistakes.
| $NewSymbol | a function to be applied to the name and context of new symbols which are created |
Performing operations when new symbols are created. When Mathematica creates a new symbol, you may want it not just to print a message, but instead to perform some other action. Any function you specify as the value of the global variable $NewSymbol will automatically be applied to strings giving the name and context of each new symbol that Mathematica creates. | This defines a function to be applied to each new symbol which is created. | |
In[4]:=
$NewSymbol = Print["Name: ", #1, " Context: ", #2]&
|
Out[4]=
|
|
|