- (let-optionals* ARGS ((VAR1 DEFAULT1) ... [RESTVAR]) BODY ...)syntax
Binding constructs for optional procedure arguments. ARGS is normally a rest-parameter taken from a lambda-list. let-optionals binds VAR1 ... to available arguments in parallel, or to DEFAULT1 ... if not enough arguments were provided. let-optionals* binds VAR1 ... sequentially, so every variable sees the previous ones. If a single variable RESTVAR is given, then it is bound to any remaining arguments, otherwise it is an error if any excess arguments are provided.
(let-optionals* '(one two) ((a 1) (b 2) (c a)) (list a b c) ) ==> (one two one)