5.6.6 Generalized Vectors

Guile has a number of data types that are generally vector-like:
strings, uniform numeric vectors, bitvectors, and of course ordinary
vectors of arbitrary Scheme values. These types are disjoint: a
Scheme value belongs to at most one of the four types listed above.

If you want to gloss over this distinction and want to treat all four
types with common code, you can use the procedures in this section.
They work with the generalized vector type, which is the union
of the four vector-like types.

Like scm_array_get_handle but an error is signalled when v
is not of rank one. You can use scm_array_handle_ref and
scm_array_handle_set to read and write the elements of v,
or you can use functions like scm_array_handle_<foo>_elements to
deal with specific types of vectors.