diff options
Diffstat (limited to 'array.txi')
-rw-r--r-- | array.txi | 136 |
1 files changed, 126 insertions, 10 deletions
@@ -23,15 +23,131 @@ Returns @code{#t} if @var{array1} and @var{array2} have the same rank and shape corresponding elements of @var{array1} and @var{array2} are @code{equal?}. @example -(array=? (make-array 'foo 3 3) (make-array 'foo '(0 2) '(1 2))) +(array=? (create-array '#(foo) 3 3) + (create-array '#(foo) '(0 2) '(0 2))) @result{} #t @end example @end defun -@defun make-array initial-value bound1 bound2 @dots{} +@defun create-array prototype bound1 bound2 @dots{} -Creates and returns an array with dimensions @var{bound1}, -@var{bound2}, @dots{} and filled with @var{initial-value}. + +Creates and returns an array of type @var{prototype} with dimensions @var{bound1}, @var{bound2}, +@dots{} and filled with elements from @var{prototype}. @var{prototype} must be an array, +vector, or string. The implementation-dependent type of the returned +array will be the same as the type of @var{prototype}; except if that would be a +vector or string with non-zero origin, in which case some variety of +array will be returned. + +If the @var{prototype} has no elements, then the initial contents of the returned +array are unspecified. Otherwise, the returned array will be filled +with the element at the origin of @var{prototype}. +@end defun +@noindent +These functions return a prototypical uniform-array enclosing the +optional argument (which must be of the correct type). If the +uniform-array type is supported by the implementation, then it is +returned; defaulting to the next larger precision type; resorting +finally to vector. + + +@defun ac64 z + + +@defunx ac64 +Returns a high-precision complex uniform-array prototype. +@end defun + +@defun ac32 z + + +@defunx ac32 +Returns a complex uniform-array prototype. +@end defun + +@defun ar64 x + + +@defunx ar64 +Returns a high-precision real uniform-array prototype. +@end defun + +@defun ar32 x + + +@defunx ar32 +Returns a real uniform-array prototype. +@end defun + +@defun as64 n + + +@defunx as64 +Returns an exact signed integer uniform-array prototype with at least +64 bits of precision. +@end defun + +@defun as32 n + + +@defunx as32 +Returns an exact signed integer uniform-array prototype with at least +32 bits of precision. +@end defun + +@defun as16 n + + +@defunx as16 +Returns an exact signed integer uniform-array prototype with at least +16 bits of precision. +@end defun + +@defun as8 n + + +@defunx as8 +Returns an exact signed integer uniform-array prototype with at least +8 bits of precision. +@end defun + +@defun au64 k + + +@defunx au64 +Returns an exact non-negative integer uniform-array prototype with at +least 64 bits of precision. +@end defun + +@defun au32 k + + +@defunx au32 +Returns an exact non-negative integer uniform-array prototype with at +least 32 bits of precision. +@end defun + +@defun au16 k + + +@defunx au16 +Returns an exact non-negative integer uniform-array prototype with at +least 16 bits of precision. +@end defun + +@defun au8 k + + +@defunx au8 +Returns an exact non-negative integer uniform-array prototype with at +least 8 bits of precision. +@end defun + +@defun at1 bool + + +@defunx at1 +Returns a boolean uniform-array prototype. @end defun @noindent When constructing an array, @var{bound} is either an inclusive range of @@ -39,7 +155,7 @@ indices expressed as a two element list, or an upper bound expressed as a single integer. So @example -(make-array 'foo 3 3) @equiv{} (make-array 'foo '(0 2) '(0 2)) +(create-array '#(foo) 3 3) @equiv{} (create-array '#(foo) '(0 2) '(0 2)) @end example @@ -52,7 +168,7 @@ linear, and its range must stay within the bounds of the old array, but it can be otherwise arbitrary. A simple example: @example -(define fred (make-array #f 8 8)) +(define fred (create-array '#(#f) 8 8)) (define freds-diagonal (make-shared-array fred (lambda (i) (list i i)) 8)) (array-set! freds-diagonal 'foo 3) @@ -77,7 +193,7 @@ returned. Returns a list of inclusive bounds. @example -(array-shape (make-array 'foo 3 5)) +(array-shape (create-array '#() 3 5)) @result{} ((0 2) (0 4)) @end example @end defun @@ -88,7 +204,7 @@ Returns a list of inclusive bounds. elements with a 0 minimum with one greater than the maximum. @example -(array-dimensions (make-array 'foo 3 5)) +(array-dimensions (create-array '#() 3 5)) @result{} (3 5) @end example @end defun @@ -104,8 +220,8 @@ Returns @code{#t} if its arguments would be acceptable to Returns the (@var{index1}, @var{index2}, @dots{}) element of @var{array}. @end defun -@defun array-set! array obj index1 index2 @dots{} +@deffn {Procedure} array-set! array obj index1 index2 @dots{} Stores @var{obj} in the (@var{index1}, @var{index2}, @dots{}) element of @var{array}. The value returned by @code{array-set!} is unspecified. -@end defun +@end deffn |