Questions about Mathematica's functional programming style, including the use of pure functions (Function[], #, &) and functions such as Map, Apply, Nest, and Through.
Mathematica's functional programming features allow users to treat functions as expressions in the same way that data are expressions. This functionality is usually more efficient than the use of Do
and For
loops that are more familiar to users of procedural programming languages like C or Fortran. By using dedicated built-in Mathematica functions and pure functions, one can write code where the output of a function is set to be the direct input of a next function, without ever introducing temporary variables at all.
An important part of this functionality is the use of pure functions, known in some other languages as "anonymous functions". These are usually distinguishable through their use of Function
(&
) and the (optional) accompanying use of Slot
(#
) and/or SlotSequence
(##
), in place of arguments.
Questions on how to use and construct functions should use the tag functions.
Useful links:
- Mathematica main documentation page on functional programming
- Tutorial by Atif Memon at the University of Maryland
- How to Work with Pure Functions
- Say no to loops! (Mathematica notebook): older tutorial available at Verbeia.com
- Excerpt from Sal Mangano's Mathematica Cookbook
- Introduction to Functional Programming (video course)