PRODUCTS
Products Overview
Mathematica
Mathematica for Students
Mathematica Home Edition
Wolfram
CDF Player
(free download)
Computable Document Format (CDF)
web
Mathematica
grid
Mathematica
Wolfram
Workbench
Wolfram
SystemModeler
Wolfram
Finance Platform
Mathematica
Add-Ons
Wolfram|Alpha Products
SOLUTIONS
Solutions Overview
Engineering
Aerospace Engineering & Defense
Chemical Engineering
Control Systems
Electrical Engineering
Image Processing
Industrial Engineering
Materials Science
Mechanical Engineering
Operations Research
Optics
Petroleum Engineering
Biotechnology & Medicine
Bioinformatics
Medical Imaging
Finance, Statistics & Business Analysis
Actuarial Sciences
Data Analysis & Mining
Econometrics
Economics
Financial Engineering & Mathematics
Financial Risk Management
Statistics
Software Engineering & Content Delivery
Authoring & Publishing
Interface Development
Software Engineering
Web Development
Science
Astronomy
Biological Sciences
Chemistry
Environmental Sciences
Geosciences
Social & Behavioral Sciences
Design, Arts & Entertainment
Game Design, Special Effects & Generative Art
Education
STEM Education Initiative
Higher Education
Community & Technical College Education
Primary & Secondary Education
Students
Technology
Computable Document Format (CDF)
High-Performance & Parallel Computing (HPC)
See Also: Technology Guide
PURCHASE
Online Store
Other Ways to Buy
Volume & Site Licensing
Contact Sales
Software
Service
Upgrades
Training
Books
Merchandise
SUPPORT
Support Overview
Knowledge Base
Learning Center
Community & Forums
Training
Does My Site Have a License?
Wolfram User Portal
COMPANY
About Wolfram Research
News & Events
Wolfram Blog
Partnerships
Employment Opportunities
History of
Mathematica
Stephen Wolfram's Home Page
Contact Us
OUR SITES
All Sites
Wolfram|Alpha
Demonstrations Project
MathWorld
Integrator
Wolfram Functions Site
Mathematica Journal
Wolfram Media
Wolfram
Tones
Wolfram Science
Stephen Wolfram
DOCUMENTATION CENTER SEARCH
New to
Mathematica
?
Find your learning path
»
Mathematica
>
Core Language
>
Defining Variables and Functions
>
Attributes
>
Flat
>
BUILT-IN MATHEMATICA SYMBOL
Flat and Orderless Functions
Attributes
Patterns and Transformation Rules
Tutorials »
|
Orderless
OneIdentity
See Also »
|
Attributes
Patterns
Defining Variables and Functions
More About »
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.
MORE INFORMATION
Flat
corresponds to the mathematical property of associativity.
For a symbol
f
with attribute
Flat
,
is automatically reduced to
.
Functions like
Plus
,
Times
, and
Dot
are
Flat
.
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
.
EXAMPLES
CLOSE ALL
Basic Examples
(2)
Nested expressions with flat functions are flattened out:
Flat
implements the notion of associativity:
Nested expressions with flat functions are flattened out:
In[1]:=
In[2]:=
Out[2]=
Flat
implements the notion of associativity:
In[1]:=
Out[1]=
In[2]:=
Out[2]=
Scope
(3)
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:
Properties & Relations
(2)
Nested expressions with flat functions are automatically flattened:
For flat functions, a definition for the two-argument case is normally sufficient:
Possible Issues
(3)
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:
SEE ALSO
Orderless
OneIdentity
TUTORIALS
Flat and Orderless Functions
Attributes
Patterns and Transformation Rules
MORE ABOUT
Attributes
Patterns
Defining Variables and Functions
RELATED LINKS
NKS|Online
(
A New Kind of Science
)
New in 1