next up previous
Contents Next: list (FUNCTION) Up: Appendix: Selected Lisp Previous: length (FUNCTION)

let (SPECIAL FORM)

Format: (let ((<var1> <init1> ) (<var2> <init2> ) . . (<varN> <initN> )) <body> )

Required arguments: 1

((<var> <init> )...): a list of zero or more lists having the form (<var> ) or (<var> <init> ). <var> must be a symbol appropriate as the name of a variable. <init> may be any Lisp expression.

Optional arguments: arbitrary

<body> : any sequence of zero or more Lisp expressions.

The <var> 's are established as local variables for the expressions in <body> . If a <var> is not accompanied by an <init> expression, it is initially bound to NIL. Otherwise, <init> is evaluated and assigned as the value of <var> . let evaluates all the expressions in <body> and returns the value of the last, or NIL if there are none.

Examples:

> (let ((a)
       (b))
   (and (not a) (not b)))
T

> (let ((a 3)
       (b 4))
   (setf a (+ a b))
   (setf b (+ a b))
   (+ a b))
18



© Colin Allen & Maneesh Dhagat
March 2007