diff options
author | Thomas Bushnell, BSG <tb@debian.org> | 2007-12-28 16:25:32 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:39 -0800 |
commit | d8ae23691ed6392b7f320f5fa7d4dd78ae52c10e (patch) | |
tree | b20b8bc02e854c4c86d39ee22a0638a8b06e01af /arraymap.scm | |
parent | edd1ebef3ad774e7cbcc2f5918d555bfb0b44091 (diff) | |
parent | 64f037d91e0c9296dcaef9a0ff3eb33b19a2ed34 (diff) | |
download | slib-d8ae23691ed6392b7f320f5fa7d4dd78ae52c10e.tar.gz slib-d8ae23691ed6392b7f320f5fa7d4dd78ae52c10e.zip |
Import Debian changes 3a5-1debian/3a5-1
slib (3a5-1) unstable; urgency=low
* New upstream release.
* slib.texi (Library Catalogs): Repeat change from 3a3-3.
* Makefile: Repeat $(htmldir)slib_toc.html changes from 3a2-1.
* guile.init: (library-vicinity): Repeat change from 3a4-2.
* debian/rules (binary-indep): Don't hide .init files in a separate
subdirectory, thus conforming better to the usual slib practice. Put a
symlink in place to ease transitions. (Closes: #407370).
Diffstat (limited to 'arraymap.scm')
-rw-r--r-- | arraymap.scm | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/arraymap.scm b/arraymap.scm index 2c88eb8..bfac855 100644 --- a/arraymap.scm +++ b/arraymap.scm @@ -89,6 +89,34 @@ ;;@args array proc ;;applies @var{proc} to the indices of each element of @var{array} in +;;turn. The value returned and the order of application are +;;unspecified. +;; +;;One can implement @var{array-index-map!} as +;;@example +;;(define (array-index-map! ra fun) +;; (array-index-for-each +;; ra +;; (lambda is (apply array-set! ra (apply fun is) is)))) +;;@end example +(define (array-index-for-each ra fun) + (define (ramap rdims inds) + (if (null? (cdr rdims)) + (do ((i (+ -1 (car rdims)) (+ -1 i)) + (is (cons (+ -1 (car rdims)) inds) + (cons (+ -1 i) inds))) + ((negative? i)) + (apply fun is)) + (let ((crdims (cdr rdims))) + (do ((i (+ -1 (car rdims)) (+ -1 i))) + ((negative? i)) + (ramap crdims (cons i inds)))))) + (if (zero? (array-rank ra)) + (fun) + (ramap (reverse (array-dimensions ra)) '()))) + +;;@args 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. ;; @@ -107,20 +135,8 @@ ;; v)) ;;@end example (define (array-index-map! ra fun) - (define (ramap rdims inds) - (if (null? (cdr rdims)) - (do ((i (+ -1 (car rdims)) (+ -1 i)) - (is (cons (+ -1 (car rdims)) inds) - (cons (+ -1 i) inds))) - ((negative? i)) - (apply array-set! ra (apply fun is) is)) - (let ((crdims (cdr rdims))) - (do ((i (+ -1 (car rdims)) (+ -1 i))) - ((negative? i)) - (ramap crdims (cons i inds)))))) - (if (zero? (array-rank ra)) - (array-set! ra (fun)) - (ramap (reverse (array-dimensions ra)) '()))) + (array-index-for-each ra + (lambda is (apply array-set! ra (apply fun is) is)))) ;;@args destination source ;;Copies every element from vector or array @var{source} to the |