vector-map - map a procedure over the elements of vectors

LIBRARY

(import (rnrs))                     ;R6RS
(import (rnrs base))                ;R6RS
(import (scheme base))              ;R7RS

SYNOPSIS

(vector-map proc vector1 vector2 ...)

DESCRIPTION

The vector-map procedure applies proc element-wise to the elements of the vectors and returns a vector of the results, in order.

Proc is always called in the same dynamic environment as vector-map itself.

The order in which proc is applied to the elements of the vectors is unspecified.

If multiple returns occur from vector-map, the return values returned by earlier returns are not mutated.

R6RS
The vectors must all have the same length.
R7RS
If more than one vector is given and not all vectors have the same length, vector-map terminates when the shortest vector runs out.

RETURN VALUES

Returns a single value which is a vector object.

EXAMPLES

(vector-map cadr '#((a b) (d e) (g h)))
        => #(b e h)

(vector-map (lambda (n) (expt n n))
            '#(1 2 3 4 5))
        => #(1 4 27 256 3125)

(vector-map + '#(1 2 3) '#(4 5 6 7))
        => #(5 7 9)          ; R7RS
        raises &assertion    ; R6RS

(let ((count 0))
  (vector-map
   (lambda (ignored)
     (set! count (+ count 1))
     count)
   '#(a b)))

=>   #(1 2) or #(2 1)

APPLICATION USAGE

This procedure is used in place of map(3scm) when vectors are used instead of lists.

COMPATIBILITY

The R6RS version is consistent with the R6RS version of map(3scm) in that it requires all vectors to be the same length, and R7RS is likewise consistent with its version of map(3scm) in instead using the shortest vector.

ERRORS

This procedure can raise exceptions with the following condition types:
&assertion (R6RS)
The wrong number of arguments was passed or an argument was outside its domain. Likewise this is raised if proc does not accept a single value, and may be raised if it does not return a single value.
R7RS
The assertions described above are errors. Additionally it is an error if proc does not return a single value. Implementations may signal an error, extend the procedure's domain of definition to include such arguments, or fail catastrophically.

SEE ALSO

map(3scm), string-map(3scm), vector-for-each(3scm)

STANDARDS

R6RS, R7RS, SRFI-43

HISTORY

The first RnRS report to carry this procedure was R6RS. R7RS also included it, basing it on the semantics from SRFI-43.

AUTHORS

This page is part of the scheme-manpages project. It includes materials from the RnRS documents. More information can be found at https://github.com/schemedoc/manpages/.


Markup created by unroff 1.0sc,    March 04, 2023.