I've implemented a let-with macro that takes an association list, keyed by symbols, that enables code to bind their corresponding values to local variables.It's designed to have a similar effect to JavaScript's with, but without with's attendant problems (by making you explicitly list the variables to bind).(define-syntax let-with  (syntax-rules ()    ((let-with alist (key ...) expr ...)     (let ((key (cond ((assq 'key alist) => cdr))) ...) expr ...))))I'd love to hear of any improvements to let-with's interface and/or implementation.Example usage:(define alist '((first . Jane)                (last . Doe)))(let-with alist (first last)  (string-append first   last))    ; Jane DoeKeys that don't exist in the incoming alist receive an undefined value; they do not fail to get bound, unlike JavaScript's with.
Is this a good way to implement let-with?
scheme;macros