evaluates rhs and assigns the result to be the value of lhs. From then on, lhs is replaced by rhs whenever it appears.

evaluates the , and assigns the results to be the values of the corresponding .


  • lhs can be any expression, including a pattern.
  • is a typical assignment for a pattern. Notice the presence of on the lefthand side, but not the righthand side.
  • An assignment of the form sets up a transformation rule associated with the symbol f.
  • Different rules associated with a particular symbol are usually placed in the order that you give them. If a new rule that you give is determined to be more specific than existing rules, it is, however, placed before them. When the rules are used, they are tested in order. »
  • New assignments with identical lhs overwrite old ones. »
  • You can see all the assignments associated with a symbol f using ?f or Definition[f].
  • If you make assignments for functions that have attributes like Flat and Orderless, you must make sure to set these attributes before you make assignments for the functions.
  • Set has attribute HoldFirst.
  • If lhs is of the form , then args are evaluated. »
  • There are some special functions for which an assignment to is automatically associated with f rather than s. These functions include: Attributes, Default, Format, MessageName, Messages, N, and Options. »
  • When it appears in an unevaluated symbolic form, Set is treated as a scoping construct so that variables in nested occurrences are renamed if necessary. »
  • returns rhs even if for some reason the assignment specified cannot be performed.
  • Some global variables such as $RecursionLimit can only be assigned a certain range or class of values.

Background & Context
Background & Context

  • Set is a function that evaluates and assigns an expression to be the value of a variable. The expression is commonly represented using the shorthand syntax . After Set is evaluated, lhs is replaced by rhs whenever it appears. Depending on the form of lhs, the result is stored as in the associated OwnValues, DownValues, or a specialized data structure.
  • Set often contains patterns on the lhs that are assigned transformed values as indicated on the rhs, e.g. . evaluates rhs immediately, so in situations where rhs should be evaluated only after the assignment is made, SetDelayed (written in shorthand as ) should be used instead.
  • The assignments associated with a given symbol can be seen using Definition[f]. Individual assignments may be removed from a symbol using Unset; Clear and ClearAll remove all definitions at once.
Introduced in 1988
Translate this page: