Next: , Previous: , Up: Introduction   [Contents][Index]


15.1.3 Evaluation—Expansion—Equivalence

Evaluation

Execution of code in Lisp is called evaluation because executing a piece of code normally results in a data object called the value produced by the code.

The symbol “=>” is used in examples to indicate evaluation.

(+ 4 5) => 9

means “the result of evaluating the code (+ 4 5) is (or would be, or would have been) 9.”

Macro Expansion

The symbol “->” is used in examples to indicate macro expansion.

(push x v) -> (setf v (cons x v))

means “the result of expanding the macro-call form (push x v) is (setf v (cons x v)).” This implies that the two pieces of code do the same thing; the second piece of code is the definition of what the first does.

Code Equivalence

The symbol “==” is used in examples to indicate code equivalence. For example,

(gcd x (gcd y z)) == (gcd (gcd x y) z)

means “the value and effects of evaluating the form (gcd x (gcd y z)) are always the same as the value and effects of (gcd (gcd x y) z) for any values of the variables x, y, and z.” This implies that the two pieces of code do the same thing; however, neither directly defines the other in the way macro expansion does.