This is documentation for Mathematica 3, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)
 Documentation / Mathematica / The Mathematica Book / Principles of Mathematica / Modularity and the Naming of Things  /

2.6.12 Manipulating Symbols and Contexts by Name


Converting between symbols and their names.

  • Here is the symbol x.
  • In[1]:= x // InputForm

    Out[1]//InputForm=

  • Its name is a string.
  • In[2]:= SymbolName[x] // InputForm

    Out[2]//InputForm=

  • This gives the symbol x again.
  • In[3]:= Symbol["x"] // InputForm

    Out[3]//InputForm=

    Once you have made an assignment such as x=2, then whenever x is evaluated, it is replaced by 2. Sometimes, however, you may want to continue to refer to x itself, without immediately getting the value of x.
    You can do this by referring to x by name. The name of the symbol x is the string "x", and even though x itself may be replaced by a value, the string "x" will always stay the same.

  • The names of the symbols x and xp are the strings "x" and "xp".
  • In[4]:= t = {SymbolName[x], SymbolName[xp]} // InputForm

    Out[4]//InputForm=

  • This assigns a value to x.
  • In[5]:= x = 2

    Out[5]=

  • Whenever you enter x it is now replaced by 2.
  • In[6]:= {x, xp} // InputForm

    Out[6]//InputForm=

  • The name "x" is not affected, however.
  • In[7]:= t // InputForm

    Out[7]//InputForm=


    Referring to symbols and contexts by name.

  • x and xp are symbols that have been created in this Mathematica session; xpp is not.
  • In[8]:= {NameQ["x"], NameQ["xp"], NameQ["xpp"]}

    Out[8]=

    You can specify the form of symbol names using string patterns of the kind discussed in Section 2.7.3. "x*" stands, for example, for all names that start with x.

  • This gives a list of all symbol names in this Mathematica session that begin with¬†x.
  • In[9]:= Names["x*"] // InputForm

    Out[9]//InputForm=

  • These names correspond to built-in functions in Mathematica.
  • In[10]:= Names["Qu*"] // InputForm

    Out[10]//InputForm=

  • This asks for names "close" to WeierstrssP.
  • In[11]:= Names["WeierstrssP", SpellingCorrection->True]

    Out[11]=


    Getting rid of symbols by name.

  • This clears the values of all symbols whose names start with x.
  • In[12]:= Clear["x*"]

  • The name "x" is still known, however.
  • In[13]:= Names["x*"]

    Out[13]=

  • But the value of x has been cleared.
  • In[14]:= {x, xp}

    Out[14]=

  • This removes completely all symbols whose names start with x.
  • In[15]:= Remove["x*"]

  • Now not even the name "x" is known.
  • In[16]:= Names["x*"]

    Out[16]=


    Removing all symbols you have introduced.

    If you do not set up any additional contexts, then all the symbols that you introduce in a Mathematica session will be placed in the Global` context. You can remove these symbols completely using Remove["Global`*"]. Built-in Mathematica objects are in the System` context, and are thus unaffected by this.