collect-values challenge pasted by DerGuteMoritz on Wed Jun 19 09:44:16 2013
#;39> (collect-values (values 1 2) (values 3 4)) (1 2 3 4)
My ir-macro based implementation pasted by DerGuteMoritz on Wed Jun 19 09:45:23 2013
(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))))))
My syntax-rules based implementation added by sjamaan on Wed Jun 19 09:52:46 2013
(define-syntax collect-values
(syntax-rules ()
((_ ?expr0 ...)
(append (receive ?expr0) ...))))