are there any amcros that play well with destructuring bind of define-type's ? I just want to check to see if there's a pre-existing solution before re-inventing my own.

I find myself writing way too much code of the form:

(define-type foo a b)
(define-type bar c d)

(lambda (x)
  (let ((c (bar-c x) (d (bar-d x)))
    (let ((a (foo-a a) (b (foo-b b)) ...

Thanks!