# Functional Programming

Functional programming is a highly developed and deeply integrated core feature of the Wolfram Language, made dramatically richer and more convenient through the symbolic nature of the language. Treating expressions like f[x] as both symbolic data and the application of a function f provides a uniquely powerful way to integrate structure and functionand an efficient, elegant representation of many common computations.

Function (&) specify a pure function (e.g. (#+1)&)

#, ##, #name slots for variables in a pure function

### Applying Functions to Lists »

Map (/@) map across a list: f/@{x,y,z}{f[x],f[y],f[z]}

Apply (@@, @@@) apply to a list: f@@{x,y,z}f[x,y,z]

MapIndexed map with index information: {f[x,{1}],f[y,{2}],f[z,{3}]}

### Iteratively Applying Functions »

Nest, NestList, NestGraph nest a function: f[f[f[x]]] etc.

Fold, FoldList fold in a list of values: f[f[f[x,1],2],3] etc.

FixedPoint, FixedPointList repeatedly nest until a fixed point

### List-Oriented Functions »

Select select from a list according to a function

Array create an array from a function

### Association-Oriented Functions »

AssociationMap create an association from a function

### "Curried" Operator Forms »

OperatorApplied make a function be applied in operator form