# Manipulating Symbols and Contexts by Name

Symbol["name"] | construct a symbol with a given name |

SymbolName[symb] | find the name of a symbol |

Converting between symbols and their names.

Here is the symbol

.

Out[1]//InputForm= |

| |

Out[2]//InputForm= |

| |

This gives the symbol

again.

Out[3]//InputForm= |

| |

Once you have made an assignment such as , then whenever is evaluated, it is replaced by . Sometimes, however, you may want to continue to refer to itself, without immediately getting the value of .

You can do this by referring to by name. The name of the symbol is the string , and even though itself may be replaced by a value, the string will always stay the same.

The names of the symbols

and

are the strings

and

.

Out[4]//InputForm= |

| |

This assigns a value to

.

Out[5]= | |

Whenever you enter

it is now replaced by

.

Out[6]//InputForm= |

| |

The name

is not affected, however.

Out[7]//InputForm= |

| |

NameQ["form"] | test whether any symbol has a name which matches form |

Names["form"] | give a list of all symbol names which match form |

Contexts["form`"] | give a list of all context names which match form |

Referring to symbols and contexts by name.

and

are symbols that have been created in this

*Mathematica* session;

is not.

Out[8]= | |

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

This gives a list of all symbol names in this

*Mathematica* session that begin with

.

Out[9]//InputForm= |

| |

These names correspond to built-in functions in

*Mathematica*.

Out[10]//InputForm= |

| |

This asks for names "close" to

.

Out[11]= | |

Clear["form"] | clear the values of all symbols whose names match form |

Clear["context`*"] | clear the values of all symbols in the specified context |

Remove["form"] | remove completely all symbols whose names match form |

Remove["context`*"] | remove completely all symbols in the specified context |

Getting rid of symbols by name.

This clears the values of all symbols whose names start with

.

The name

is still known, however.

Out[13]= | |

But the value of

has been cleared.

Out[14]= | |

This removes completely all symbols whose names start with

.

Now not even the name

is known.

Out[16]= | |

Remove["Global`*"] | remove completely all symbols in the context |

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 context. You can remove these symbols completely using Remove["Global`*"]. Built-in *Mathematica* objects are in the context, and are thus unaffected by this.