Next: Procedures, Previous: Literal expressions, Up: Primitive expression types [Index]
syntax: (⟨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 values in Control features). 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.
Next: Procedures, Previous: Literal expressions, Up: Primitive expression types [Index]