@code{(require 'array-for-each)} @ftindex array-for-each @deffn {Procedure} array-map! array0 proc array1 @dots{} @var{array1}, @dots{} must have the same number of dimensions as @var{array0} and have a range for each index which includes the range for the corresponding index in @var{array0}. @var{proc} is applied to each tuple of elements of @var{array1} @dots{} and the result is stored as the corresponding element in @var{array0}. The value returned is unspecified. The order of application is unspecified. @end deffn @defun array-map prototype proc array1 array2 @dots{} @var{array2}, @dots{} must have the same number of dimensions as @var{array1} and have a range for each index which includes the range for the corresponding index in @var{array1}. @var{proc} is applied to each tuple of elements of @var{array1}, @var{array2}, @dots{} and the result is stored as the corresponding element in a new array of type @var{prototype}. The new array is returned. The order of application is unspecified. @end defun @defun array-for-each proc array0 @dots{} @var{proc} is applied to each tuple of elements of @var{array0} @dots{} in row-major order. The value returned is unspecified. @end defun @defun array-indexes array Returns an array of lists of indexes for @var{array} such that, if @var{li} is a list of indexes for which @var{array} is defined, (equal? @var{li} (apply array-ref (array-indexes @var{array}) @var{li})). @end defun @defun array-index-for-each array proc applies @var{proc} to the indices of each element of @var{array} in turn. The value returned and the order of application are unspecified. One can implement @var{array-index-map!} as @example (define (array-index-map! ra fun) (array-index-for-each ra (lambda is (apply array-set! ra (apply fun is) is)))) @end example @end defun @deffn {Procedure} array-index-map! array proc applies @var{proc} to the indices of each element of @var{array} in turn, storing the result in the corresponding element. The value returned and the order of application are unspecified. One can implement @var{array-indexes} as @example (define (array-indexes array) (let ((ra (apply make-array '#() (array-dimensions array)))) (array-index-map! ra (lambda x x)) ra)) @end example Another example: @example (define (apl:index-generator n) (let ((v (make-vector n 1))) (array-index-map! v (lambda (i) i)) v)) @end example @end deffn @deffn {Procedure} array:copy! destination source Copies every element from vector or array @var{source} to the corresponding element of @var{destination}. @var{destination} must have the same rank as @var{source}, and be at least as large in each dimension. The order of copying is unspecified. @end deffn