For instance the symbol s-expression xyz evaluates to the value held by the variable xyz . Not all s-expressions are valid programs. Scheme evaluates a list form by examining the first element, or head , of the form. If the head evaluates to a procedure, the rest of the form is evaluated to get the procedure's arguments, and the procedure is applied to the arguments. If the head of the form is a special form , the evaluation proceeds in a manner idiosyncratic to that form.
Users can create their own procedures using the special form lambda .
If we wanted to call this same procedure many times, we could create a replica using lambda each time, but we can do better. The symbol x acts as a variable holding the procedure's argument. Each occurrence of x in the procedure's body refers to the procedure's argument. The variable x is said to be local to the procedure's body. The following is a 2-argument procedure that calculates the area of a rectangle.