blob: f10ad650ac76a92b9987fe10d361b2206b8db0e6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
@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
@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 create-array '#() (array-shape 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! source destination
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
|