Next: , Previous: Conventional Arrays, Up: Arrays


22.6.2 Array Mapping

— Scheme Procedure: array-map! array0 proc [array1 ...]
— Scheme Procedure: array-map-in-order! array0 proc [array1 ...]
— C Function: scm_array_map (array0, proc, array1)

Apply proc to each tuple of elements of array1 ... and store the result as the corresponding element in array0. array1, ... must have the same number of dimensions as array0 and have a range for each index which includes the range for the corresponding index in array0. The order of application is unspecified.

— Scheme Procedure: array-for-each proc array0 [array1 ...]
— C Function: scm_array_for_each (proc, array0, array1)

Apply proc to each tuple of elements of array0 ... in row-major order.

— Scheme Procedure: array-index-map! array proc
— C Function: scm_array_index_map_x (array, proc)

Apply proc to the indices of each element of array in turn, storing the result in the corresponding element. The order of application are unspecified.

One can implement array-indexes as:

          (define (array-indexes array)
            (let ((ra (apply make-array #f (array-shape array))))
              (array-index-map! ra (lambda x x))
              ra))

Another example:

          (define (apl:index-generator n)
            (let ((v (make-uniform-vector n 1)))
              (array-index-map! v (lambda (i) i))
              v))