[procedure] map proc list1 list2 ...

R5RS: The lists must be lists, and proc must be a procedure taking as many arguments as there are lists and returning a single value. If more than one list is given, then they must all be the same length. Map applies proc element-wise to the elements of the lists and returns a list of the results, in order. The dynamic order in which proc is applied to the elements of the lists is unspecified.

SRFI-1 extends R5RS allow the arguments to be of unequal length; it terminates when the shortest list runs out.

R6RS: The implementation should check all the lists have the same length (it is a recommendation; so srfi-1 semantics and r6rs semantics can coexist, IMHO --shiro).
R6RS explicitly requires that if proc returns multiple times because of call/cc, the values returned by earlier returns are not mutated (it prohibits the implementation that destructively appends the results to construct the list to return.)

See also for-each, map-in-order.

[generic] map proc coll1 coll2 ...

Gauche extends this to take arbitrary collections (with gauche.collection module).