(define-syntax let-optionals* (syntax-rules () ((_ ?args ((?var0 ?default0) ?more-bindings ...) ?body ...) (let ((tmp ?args)) (let ((?var0 (if (null? tmp) ?default0 (car tmp)))) (let-optionals* (if (null? tmp) '() (cdr tmp)) (?more-bindings ...) ?body ...)))) ((_ ?args (?rest) ?body ...) (let ((?rest ?args)) ?body ...))))