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