;; this map is NOT tail optimized
(bind-func map:[List{!a}*,[!a,!b,!c]*,List{!b}*,List{!c}*]*
(lambda (func xs1 xs2)
(let ((f (lambda (l1 l2)
(if (null? l1)
null
(cons (func (car l1) (car l2))
(f (cdr l1) (cdr l2)))))))
(f xs1 xs2))))