6.9 Comprehensions and Sequences
Sometimes sequential processing is unavoidable, so math/array provides loops and sequences.
syntax
(for/array: maybe-shape maybe-fill (for:-clause ...) maybe-type-ann body ...+)
syntax
(for*/array: maybe-shape maybe-fill (for:-clause ...) maybe-type-ann body ...+)
maybe-shape =
| #:shape ds maybe-fill =
| #:fill fill maybe-type-ann =
| : body-type
ds : In-Indexes
fill : body-type
> (for/array: ([x (in-range 3)] [y (in-range 3)]) : Integer (+ x y))
- : #(struct:Mutable-Array
(Indexes
Index
(Boxof Boolean)
(-> Void)
(-> Indexes Integer)
(-> Indexes Integer Void)
(Vectorof Integer))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-mutable-array.rkt:14:13 prop:custom-write>)
(mutable-array #[0 2 4])
> (for*/array: ([x (in-range 3)] [y (in-range 3)]) : Integer (+ x y))
- : #(struct:Mutable-Array
(Indexes
Index
(Boxof Boolean)
(-> Void)
(-> Indexes Integer)
(-> Indexes Integer Void)
(Vectorof Integer))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-mutable-array.rkt:14:13 prop:custom-write>)
(mutable-array #[0 1 2 1 2 3 2 3 4])
> (for*/array: #:shape #(3 3) ([x (in-range 3)] [y (in-range 3)]) : Integer (+ x y))
- : #(struct:Mutable-Array
(Indexes
Index
(Boxof Boolean)
(-> Void)
(-> Indexes Integer)
(-> Indexes Integer Void)
(Vectorof Integer))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-mutable-array.rkt:14:13 prop:custom-write>)
(mutable-array #[#[0 1 2] #[1 2 3] #[2 3 4]])
> (for*/array: #:shape #(4) ([x (in-range 1 3)]) x)
- : #(struct:Mutable-Array
(Indexes
Index
(Boxof Boolean)
(-> Void)
(-> Indexes Any)
(-> Indexes Any Void)
(Vectorof Any))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-mutable-array.rkt:14:13 prop:custom-write>)
(mutable-array #[1 2 1 1])
> (for*/array: #:shape #(4) #:fill -1 ([x (in-range 1 3)]) x)
- : #(struct:Mutable-Array
(Indexes
Index
(Boxof Boolean)
(-> Void)
(-> Indexes Any)
(-> Indexes Any Void)
(Vectorof Any))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-mutable-array.rkt:14:13 prop:custom-write>)
(mutable-array #[1 2 -1 -1])
syntax
(for/array maybe-shape maybe-fill (for-clause ...) body ...+)
syntax
(for*/array maybe-shape maybe-fill (for-clause ...) body ...+)
procedure
(in-array arr) → (Sequenceof A)
arr : (Array A)
procedure
(in-array-axis arr [axis]) → (Sequenceof (Array A))
arr : (Array A) axis : Integer = 0
> (define arr (array #[#[1 2] #[10 20]])) > (sequence->list (in-array-axis arr))
- : (Listof
#(struct:Array
(Indexes Index (Boxof Boolean) (-> Void) (-> Indexes Positive-Byte))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:56:13 prop:equal+hash>
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:55:13 prop:custom-write>
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:54:13 prop:custom-print-quotable>))
(list (array #[1 2]) (array #[10 20]))
> (sequence->list (in-array-axis arr 1))
- : (Listof
#(struct:Array
(Indexes Index (Boxof Boolean) (-> Void) (-> Indexes Positive-Byte))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:56:13 prop:equal+hash>
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:55:13 prop:custom-write>
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:54:13 prop:custom-print-quotable>))
(list (array #[1 10]) (array #[2 20]))
procedure
(in-array-indexes ds) → (Sequenceof Indexes)
ds : In-Indexes
> (for/array: #:shape #(3 3) ([js (in-array-indexes #(3 3))]) : Indexes js)
- : #(struct:Mutable-Array
(Indexes
Index
(Boxof Boolean)
(-> Void)
(-> Indexes Indexes)
(-> Indexes Indexes Void)
(Vectorof Indexes))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-mutable-array.rkt:14:13 prop:custom-write>)
(mutable-array
#[#['#(0 0) '#(0 1) '#(0 2)]
#['#(1 0) '#(1 1) '#(1 2)]
#['#(2 0) '#(2 1) '#(2 2)]])
> (for*/array: #:shape #(3 3) ([j0 (in-range 3)] [j1 (in-range 3)]) : In-Indexes (vector j0 j1))
- : #(struct:Mutable-Array
(Indexes
Index
(Boxof Boolean)
(-> Void)
(-> Indexes In-Indexes)
(-> Indexes In-Indexes Void)
(Vectorof In-Indexes))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-mutable-array.rkt:14:13 prop:custom-write>)
(mutable-array
#[#['#(0 0) '#(0 1) '#(0 2)]
#['#(1 0) '#(1 1) '#(1 2)]
#['#(2 0) '#(2 1) '#(2 2)]])
> (indexes-array #(3 3))
- : #(struct:Array
(Indexes Index (Boxof Boolean) (-> Void) (-> Indexes Indexes))
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:56:13 prop:equal+hash>
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:55:13 prop:custom-write>
#<syntax:build/user/8.7/pkgs/math-lib/math/private/array/typed-array-struct.rkt:54:13 prop:custom-print-quotable>)
(array
#[#['#(0 0) '#(0 1) '#(0 2)]
#['#(1 0) '#(1 1) '#(1 2)]
#['#(2 0) '#(2 1) '#(2 2)]])