;;;; Copyright (c) 2017, Jeremy Steward ;;;; All rights reserved. ;;;; ;;;; Redistribution and use in source and binary forms, with or without ;;;; modification, are permitted provided that the following conditions are met: ;;;; ;;;; 1. Redistributions of source code must retain the above copyright notice, ;;;; this list of conditions and the following disclaimer. ;;;; ;;;; 2. Redistributions in binary form must reproduce the above copyright notice, ;;;; this list of conditions and the following disclaimer in the documentation ;;;; and/or other materials provided with the distribution. ;;;; ;;;; 3. Neither the name of the copyright holder nor the names of its ;;;; contributors may be used to endorse or promote products derived from this ;;;; software without specific prior written permission. ;;;; ;;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ;;;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ;;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ;;;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE ;;;; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ;;;; CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ;;;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ;;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ;;;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ;;;; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ;;;; POSSIBILITY OF SUCH DAMAGE. (module generalized-arrays () (import chicken scheme data-structures) ;; Constructors (export make-array array-tabulate array-broadcast) ;; Predicates (export array? array-mutable?) ;; Metadata accessors (export array-storage-class array-storage-object array-rank array-shape array-stride array-offset array-index->storage-index array-ref) ;; Accessors (export array-recursive-ref array-for-each array-for-each-index) ;; Mutators (export array-set! array-tabulate!) ;; Whole array (export array-map array-map! array-fold array-reduce array-cumulate array-count array-index array-compress array-expand array-rearrange) ;; Transformations (export array-transform array-diagonal array-reshape array-reverse array-transpose array-rearrange-axes array-slice array-squeeze array-unsqueeze) ;; Copying and Conversion (export array-copy array-copy! array-append array-repeat array-reclassify array->nested-vector array->nested-list nested-vector->array nested-list->array) ;; Inner and outer products (export array-inner-product array-outer-product) ;; Input / Output (export array-read array-write) (use srfi-1 srfi-4 srfi-133 matchable storage-classes typed-records (only type-checks define-check+error-type check-natural-fixnum check-positive-fixnum check-boolean check-vector check-list) (only type-errors define-error-type)) (include "generalized-arrays/generalized-arrays-base.scm") (include "generalized-arrays/generalized-arrays-derived.scm") (include "generalized-arrays/generalized-arrays-io.scm") )