It's pretty much like zip
and you don't have to make it since it's already in the SRFI-1 list library:
(require srfi/1)
(zip '(a b c) '(d e f) '(g h I)) ; ==> ((a d g) (b e h) (c f i))
Now to get to take all parameters as a list you use apply:
(apply zip '((a b c) (d e f) (g h I)))
; ==> ((a d g) (b e h) (c f i))
And, just for completeness. Here is how zip
is defined:
(define (zip . lsts)
(apply map list lsts))