This is documentation for Mathematica 3, which was
based on an earlier version of the Wolfram Language.
 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, f [ f [ a , b ], f [ c ]] is automatically reduced to f [ a , b , c ]. Functions like Plus, Times and Dot are Flat. For a Flat function f, the variables x and y in the pattern f [x_, y_] can correspond to any sequence of arguments. The Flat attribute must be assigned before defining any values for a Flat function. See the Mathematica book: Section 2.3.7, Section 2.5.3. See also: Orderless, OneIdentity. Further Examples Normally, functions that you define do not have any special attributes. In[1]:= Global`f Nothing special happens with this nest of f's. In[2]:= Out[2]= By assigning the attribute Flat to a function, you are specifying that all nestings of the functions should be flattened out. In[3]:= In[4]:= Out[4]= This is how to bring back the old behavior. In[5]:=