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
]] is automatically reduced to f
Functions like Plus, Times and Dot are Flat.
For a Flat function f, the variables x and y in the pattern f
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.
Normally, functions that you define do not have any special attributes.
Nothing special happens with this nest of f's.
By assigning the attribute Flat to a function, you are specifying that all nestings of the functions should be flattened out.
This is how to bring back the old behavior.
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER
FOR THE LATEST INFORMATION.