(⟨operator⟩ ⟨operand1⟩ …)A procedure call is written by enclosing in parentheses an expression for the procedure to be called followed by expressions for the arguments to be passed to it. The operator and operand expressions are evaluated (in an unspecified order) and the resulting procedure is passed the resulting arguments.
(+ 3 4) ⇒ 7 ((if #f + *) 3 4) ⇒ 12
The procedures in this document are available as the values of variables
exported by the standard libraries. For example, the addition and
multiplication procedures in the above examples are the values of the
variables + and * in the base library. New procedures are
created by evaluating lambda expressions (see Procedures).
Procedure calls can return any number of values (see Control features for a description of values). Most of the procedures
defined in this report return one value or, for procedures such as
apply, pass on the values returned by a call to one of their
arguments. Exceptions are noted in the individual descriptions.
Note: In contrast to other dialects of Lisp, the order of evaluation is unspecified, and the operator expression and the operand expressions are always evaluated with the same evaluation rules.
Note: Although the order of evaluation is otherwise unspecified, the effect of any concurrent evaluation of the operator and operand expressions is constrained to be consistent with some sequential order of evaluation. The order of evaluation may be chosen differently for each procedure call.
Note: In many dialects of Lisp, the empty list, ‘()’, is a legitimate expression evaluating to itself. In Scheme, it is an error.