Page:Scheme - An interpreter for extended lambda calculus.djvu/39



merely binds the variable  to , and then evaluates its argument. This is why this primitive follows the scoping rules for variables!

closes the function to be defined in the null environment, and installs the closure in the LISP value cell.

looks up the specified variable in the current environment, and clobbers the value cell in the environment with the new value. If the variable is not bound in the current environment, the LISP value cell is set. Note that  does not need to be an , since it does not fool with order of evaluation; all it needs is access to the "machine register".

binds the tag variable to a  expression which contains the current. When  applies such an expression as a function (of one argument), it makes the   in the   expression be the , places the value of the argument in  , and does a. The effect is to return from the  expression with the argument to the