Function ApplicationΒΆ

In an expression, a function f can be applied to an argument x like this:

f x

This is known as forward, or prefix, application, although it can also be considered, somewhat whimsically, that the gap between the f and the x is an infix operator known as operator whitespace.

Although this is the mathematical syntax for application, many programmers, may prefer to swap the order of the function and argument like this:

x.f

This is known as reverse application. Operator dot binds tighter than operator whitespace so this expression:

g x.f

is parsed as

g (x.f)

Both operator dot and operator whitespace are left associative.

Another application operator is stolen from Haskell:

h $ g $ h $ x;

Operator $ binds more weakly then either dot or whitespace, and is right associative so the above parses as:

h (g (h x));

Finally, there is a shortcut for applying a function to the unit tuple ():

#f

which means the same as:

f ()

Operator hash # is a prefix operator that binds more tightly than the other application operators.