# The Meaning of Expressions

The notion of expressions is a crucial unifying principle in *Mathematica*. It is the fact that every object in *Mathematica* has the same underlying structure that makes it possible for *Mathematica* to cover so many areas with a comparatively small number of basic operations.

Although all expressions have the same basic structure, there are many different ways that expressions can be used. Here are a few of the interpretations you can give to the parts of an expression.

meaning of f | meaning of | examples |

Function | arguments or parameters | Sin[x],f[x,y] |

Command | arguments or parameters | Expand[(x+1)^2] |

Operator | operands | x+y,a=b |

Head | elements | {a,b,c} |

Object type | contents | RGBColor[r,g,b] |

Some interpretations of parts of expressions.

Expressions in *Mathematica* are often used to specify operations. So, for example, typing in causes and to be added together, while Factor[x^6-1] performs factorization.

Perhaps an even more important use of expressions in *Mathematica*, however, is to maintain a structure, which can then be acted on by other functions. An expression like does not specify an operation. It merely maintains a list structure, which contains a collection of three elements. Other functions, such as Reverse or Dot, can act on this structure.

The full form of the expression is List[a, b, c]. The head List performs no operations. Instead, its purpose is to serve as a "tag" to specify the "type" of the structure.

You can use expressions in *Mathematica* to create your own structures. For example, you might want to represent points in three-dimensional space, specified by three coordinates. You could give each point as . The "function" again performs no operation. It serves merely to collect the three coordinates together, and to label the resulting object as a .

You can think of expressions like as being "packets of data", tagged with a particular head. Even though all expressions have the same basic structure, you can distinguish different "types" of expressions by giving them different heads. You can then set up transformation rules and programs which treat different types of expressions in different ways.