Another possibility:
(let init-loop ((args init-args))
(unless (null? args)
((if (defined? (car args) env) let-set! varlet) env (car args)
(cadr args))
(init-loop (cddr args)))))
varlet adds a new binding to the let even if one already
exists for the symbol (shadowing the old one).