(define-syntax collect-values (ir-macro-transformer (lambda (x i c) (let* ((vals (cdr x)) (vars (map (lambda _ (gensym)) vals))) `(let-values ,(zip vars vals) (append . ,vars))))))