## Expression

The fundamental concept in lambda calculus is the notion if an expression. An expression is defined as

## Name

A *name*, also called a *variable*, is an identifier which, in general, can be any of the letters . For example, .

## Function

An function is defined as

An example of a function is the following

This expression defines the identity function. The name after the is the identifier or the *argument* of this function. The expression after the point (in this case a single ) is called the *body* of the function.

Functions can be applied to expressions.

## Application

An application is defined as

An example of an application is the following

This is the identity function applied to . Parenthesis are used for clarity in order to avoid ambiguity. Function applications are evaluated by substituting the value of the argument (in this case ) in the body of the function definition, i.e.

In this transformation the notation is used to indicate that all occurrences of are substituted by in the expression to the right.

## Order of Evaluation

An expression can be surrounded with parenthesis for clarity, that is, if is an expression, is the same expression. The only keywords used in the language are and the dot. In order to avoid cluttering expressions with parenthesis, the convention is that function application associates from the left.

For example the expression

is evaluated applying the expressions as follows

## Scope

In calculus all names are local to definitions. In the function , is *bound* since its occurrence in the body of the definition is preceded by . A name not preceded by a is called a *free variable*. In the expression

the variable is bound and is free. In the expression

The in the body of the first expression from the left is bound to the first . The in the body of the second expression is bound to the second and the is free. It is very important to notice that the in the second expression is totally independent of the in the first expression.

Be careful when performing substitutions to avoid mixing up free occurrences of an identifier with bound ones. In the expression

the function to the left contains a bound , whereas the at the right is free. Simply by renaming the bound to , this confusion is avoided