;;;; 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. (declare (safe-globals) (specialize)) (declare (fixnum-arithmetic)) (cond-expand (chicken-5) (else (declare (uses generalized-arrays-lowlevel)))) (module generalized-arrays () (cond-expand (chicken-5 (import (chicken base) (chicken fixnum) (chicken format) (chicken module) (chicken read-syntax) (chicken sort) (chicken type) (scheme) (srfi-1) (srfi-4) (srfi-133) (matchable) (storage-classes) (typed-records) (only type-checks check-natural-fixnum check-positive-fixnum check-boolean check-vector check-list) generalized-arrays-lowlevel storage-classes)) (else (import chicken scheme data-structures) (import generalized-arrays-lowlevel) (use srfi-1 srfi-4 srfi-133 matchable storage-classes typed-records (only type-checks check-natural-fixnum check-positive-fixnum check-boolean check-vector check-list)))) ;; 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-find 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) ;; Input / Output (export array-read array-write) ;; Check if arg is array (export check-array) (include "generalized-arrays/generalized-arrays-base.scm") (include "generalized-arrays/generalized-arrays-derived.scm") (include "generalized-arrays/generalized-arrays-io.scm") )