Mathematica > Core Language > Defining Variables and Functions > Attributes > Flat >

Flat

Flat
is an attribute that can be assigned to a symbol f to indicate that all expressions involving nested functions f should be flattened out. This property is accounted for in pattern matching.
  • Flat corresponds to the mathematical property of associativity.
  • For a symbol f with attribute Flat, is automatically reduced to .
  • For a Flat function f, the variables x and y in the pattern can correspond to any sequence of arguments.
  • The Flat attribute must be assigned before defining any values for a Flat function.
  • When functions that are Flat are used in pattern matching, they often also require the attribute OneIdentity.
Nested expressions with flat functions are flattened out:
Flat implements the notion of associativity:
Nested expressions with flat functions are flattened out:
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
 
Flat implements the notion of associativity:
In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=
Nested expressions with associative functions are flattened out:
In pattern matching, Flat allows sequences of elements to be replaced:
For flat and orderless functions, any subset of the arguments may match:
Nested expressions with flat functions are automatically flattened:
For flat functions, a definition for the two-argument case is normally sufficient:
Pattern matching for flat functions requires the OneIdentity attribute as well:
For flat and orderless functions, pattern matching may have to try a large number of cases:
Longest can be used to prevent additional matches for shorter subexpressions:
New in 1
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
Format:   HTML  |  CDF