represents the first argument supplied to a pure function.


represents the n ^(th) argument.


represents the value associated with key "name" in an association in the first argument.


  • # is used to represent arguments or formal parameters in pure functions of the form body& or Function[body].
  • # is equivalent to Slot[1].
  • #n is equivalent to Slot[n]. n must be a nonnegative integer.
  • #0 gives the head of the function, i.e. the pure function itself.
  • When applied to an association, #name is equivalent to #["name"] and picks out elements in the association.
  • In the form #name, the characters in name can be any combination of alphanumeric characters not beginning with digits.

Background & Context

  • Slot[1] represents the first argument supplied to a pure function. The expression Slot[1] may be compactly denoted with the hash character #, or more explicitly as #1. The ^(th) argument to a pure function is represented by Slot[n], commonly denoted #n. The zeroth slot #0 of a pure function is its head.
  • Slot is typically used inside Function. In pure functions of the form (body &), # is used as part of the body to represent arguments or formal parameters. An example application of Slot is given by f[#3,#2,#1]&[x,y,z], which evaluates to f[z,y,x].
  • A sequence of arguments to be supplied to a pure function is represented using SlotSequence (written in shorthand as ##n).
  • When pure functions are nested, the meaning of slots may become ambiguous, in which case parameters must be specified using an explicit Function construction with named parameters.


open allclose all

Basic Examples  (3)

# represents the first argument of a pure function:

Use numbered arguments:

Used named arguments from an association:

Scope  (5)

# is short for #1, the first argument:

#name is effectively a short form of #["name"]:

#name is interpreted as Slot["name"]:

#name always refers to the association in the first argument:

Extract from an association slot other than the first:

Generalizations & Extensions  (1)

#0 stands for the whole pure function:

Applications  (1)

Programmatically create a pure function of 5 arguments:

Properties & Relations  (3)

# allows function arguments to be referenced without giving them names:

Additional arguments are ignored:

## stands for the sequence of all arguments:

Possible Issues  (3)

Use explicit names to set up nested pure functions:

Use # for the inner function:

Use # for the outer function:

Using nested # notation behaves differently:

If too few arguments are provided, a message is generated:

A space between # and the following token will be interpreted as multiplication:

Neat Examples  (1)

A recursive definition for factorial using #0:

Introduced in 1988
Updated in 2014