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 / Built-in Functions / Programming / Pattern Matching  /
Optional

  • p : v is a pattern object which represents an expression of the form p, which, if omitted, should be replaced by v.
  • Optional is used to specify "optional arguments" in functions represented by patterns. The pattern object p gives the form the argument should have, if it is present. The expression v gives the "default value" to use if the argument is absent.
  • Example: the pattern f[x_, y_:1] is matched by f[a], with x taking the value a, and y taking the value 1. It can also be matched by f[a, b], with y taking the value b.
  • The form s _: v is equivalent to Optional[ s _, v ]. This form is also equivalent to s :_: v. There is no syntactic ambiguity since s must be a symbol in this case.
  • The special form s _. is equivalent to Optional[ s _] and can be used to represent function arguments which, if omitted, should be replaced by default values globally specified for the functions in which they occur.
  • Values for Default[ f , ... ] specify default values to be used when _. appears as an argument of f. Any assignments for Default[ f , ... ] must be made before _. first appears as an argument of f.
  • Optional[ s _ h ] represents a function which can be omitted, but which, if present, must have head h. There is no simpler syntactic form for this case.
  • Functions with built-in default values include Plus, Times and Power.
  • See the Mathematica book: Section 2.3.9Section A.2.7.
  • See also: Alternatives.

    Further Examples

    This function converts a list of integers to a base representation. It uses the optional pattern object base_:2 to indicate that the base of the input is assumed to be unless indicated otherwise.

    In[1]:=

    This gives the digits of the number in base .

    In[2]:=

    Out[2]=

    Now this list can be converted back to base .

    In[3]:=

    Out[3]=

    If the list of digits was in some other base, you would have to indicate that explicitly in the convert function. Here is a list of the base digits of the number .

    In[4]:=

    Out[4]=

    Now you have to provide the correct base to the convert function.

    In[5]:=

    Out[5]=