In the diagram, you can write a function like (lambda x ...), and in this case it xbinds to the entire list of arguments or uses the wrong lambda list, for example (lambda (a b c . ds) ...), which takes at least three arguments and binds dsto the list of remaining arguments. Then the code you are trying to write will be similar to (I write in the R5RS scheme):
(define (my-map function list1 . more-lists)
(define (some? function list)
;; returns #f if (function x) returns #t for
;; some x in the list
(and (pair? list)
(or (function (car list))
(some? function (cdr list)))))
(define (map1 function list)
;; non-variadic map. Returns a list whose elements are
;; the result of calling function with corresponding
;; elements of list
(if (null? list)
'()
(cons (function (car list))
(map1 function (cdr list)))))
;; Variadic map implementation terminates
;; when any of the argument lists is empty
(let ((lists (cons list1 more-lists)))
(if (some? null? lists)
'()
(cons (apply function (map1 car lists))
(apply my-map function (map1 cdr lists))))))
:
(my-map + '(0 2 5) '(1 2 3))
;=> (1 4 8)
, map ( map1), (map1 car lists), function , (map1 cdr lists) , . map ( my-map), map.