mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 05:39:18 +02:00
Merge branch 'master' of github.com:ashinn/chibi-scheme
This commit is contained in:
commit
b06c4cca9d
2 changed files with 54 additions and 9 deletions
|
@ -22,19 +22,33 @@
|
||||||
(lp (+ i 1)))))))))
|
(lp (+ i 1)))))))))
|
||||||
|
|
||||||
(define (index-rotate n k)
|
(define (index-rotate n k)
|
||||||
|
(assert (and (exact-integer? n)
|
||||||
|
(exact-integer? k)
|
||||||
|
(< -1 k n)))
|
||||||
(list->vector (append (iota (- n k) k) (iota k))))
|
(list->vector (append (iota (- n k) k) (iota k))))
|
||||||
|
|
||||||
(define (index-first n k)
|
(define (index-first n k)
|
||||||
|
(assert (and (exact-integer? n)
|
||||||
|
(exact-integer? k)
|
||||||
|
(< -1 k n)))
|
||||||
(list->vector (cons k
|
(list->vector (cons k
|
||||||
(append (iota k)
|
(append (iota k)
|
||||||
(iota (- n (+ k 1)) (+ k 1))))))
|
(iota (- n (+ k 1)) (+ k 1))))))
|
||||||
|
|
||||||
(define (index-last n k)
|
(define (index-last n k)
|
||||||
|
(assert (and (exact-integer? n)
|
||||||
|
(exact-integer? k)
|
||||||
|
(< -1 k n)))
|
||||||
(list->vector (append (iota k)
|
(list->vector (append (iota k)
|
||||||
(iota (- n (+ k 1)) (+ k 1))
|
(iota (- n (+ k 1)) (+ k 1))
|
||||||
(list k))))
|
(list k))))
|
||||||
|
|
||||||
(define (index-swap n i j)
|
(define (index-swap n i j)
|
||||||
|
(assert (and (exact-integer? n)
|
||||||
|
(exact-integer? i)
|
||||||
|
(exact-integer? j)
|
||||||
|
(< -1 i n)
|
||||||
|
(< -1 j n)))
|
||||||
(let ((result (vector-iota n 0)))
|
(let ((result (vector-iota n 0)))
|
||||||
(vector-set! result i j)
|
(vector-set! result i j)
|
||||||
(vector-set! result j i)
|
(vector-set! result j i)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
;; Adapted from original SRFI reference test suite:
|
;; Adapted from original SRFI reference test suite:
|
||||||
|
|
||||||
;; SRFI 179: Nonempty Intervals and Generalized Arrays (Updated)
|
;; SRFI 231: Intervals and Generalized Arrays
|
||||||
|
|
||||||
;; Copyright 2016, 2018, 2020 Bradley J Lucier.
|
;; Copyright 2016, 2018, 2020 Bradley J Lucier.
|
||||||
;; All Rights Reserved.
|
;; All Rights Reserved.
|
||||||
|
@ -29,8 +29,8 @@
|
||||||
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
;; OTHER DEALINGS IN THE SOFTWARE.
|
;; OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
;;; A test program for SRFI 179:
|
;;; A test program for SRFI 231:
|
||||||
;;; Nonempty Intervals and Generalized Arrays (Updated)
|
;;; Intervals and Generalized Arrays
|
||||||
|
|
||||||
(define-library (srfi 231 test)
|
(define-library (srfi 231 test)
|
||||||
(import (scheme base) (scheme cxr) (scheme complex)
|
(import (scheme base) (scheme cxr) (scheme complex)
|
||||||
|
@ -189,10 +189,10 @@
|
||||||
(zero? (random 2)))
|
(zero? (random 2)))
|
||||||
|
|
||||||
(define (array-display A)
|
(define (array-display A)
|
||||||
|
|
||||||
(define (display-item x)
|
(define (display-item x)
|
||||||
(display x) (display "\t"))
|
(display x) (display "\t"))
|
||||||
|
|
||||||
(newline)
|
(newline)
|
||||||
(case (array-dimension A)
|
(case (array-dimension A)
|
||||||
((1) (array-for-each display-item A) (newline))
|
((1) (array-for-each display-item A) (newline))
|
||||||
|
@ -903,7 +903,38 @@
|
||||||
|
|
||||||
(random-source-pseudo-randomize! default-random-source 7 23)
|
(random-source-pseudo-randomize! default-random-source 7 23)
|
||||||
|
|
||||||
(test-begin "srfi-179: nonempty intervals and generalized arrays")
|
(test-begin "srfi-231: nonempty intervals and generalized arrays")
|
||||||
|
|
||||||
|
(test-group "index-* and miscellaneous tests"
|
||||||
|
(test-error (index-first 'a 3))
|
||||||
|
(test-error (index-first 5 'a))
|
||||||
|
(test-error (index-first -1 5))
|
||||||
|
(test-error (index-first 0 -2))
|
||||||
|
(test-error (index-first 3 5))
|
||||||
|
(test '#(3 0 1 2 4) (index-first 5 3))
|
||||||
|
|
||||||
|
(test-error (index-last 'a 3))
|
||||||
|
(test-error (index-last 5 'a))
|
||||||
|
(test-error (index-last -1 5))
|
||||||
|
(test-error (index-last 0 -2))
|
||||||
|
(test-error (index-last 3 5))
|
||||||
|
(test '#(0 1 2 4 3) (index-last 5 3))
|
||||||
|
|
||||||
|
(test-error (index-rotate 'a 3))
|
||||||
|
(test-error (index-rotate 5 'a))
|
||||||
|
(test-error (index-rotate -1 5))
|
||||||
|
(test-error (index-rotate 0 -2))
|
||||||
|
(test-error (index-rotate 3 5))
|
||||||
|
(test '#(3 4 0 1 2) (index-rotate 5 3))
|
||||||
|
|
||||||
|
(test-error (index-swap 'a 3 0))
|
||||||
|
(test-error (index-swap 5 'a 0))
|
||||||
|
(test-error (index-swap -1 5 0))
|
||||||
|
(test-error (index-swap 0 -2 0))
|
||||||
|
(test-error (index-swap 3 5 0))
|
||||||
|
(test '#(3 1 2 0 4) (index-swap 5 3 0))
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
(test-group "interval tests"
|
(test-group "interval tests"
|
||||||
(test-error (make-interval 1 '#(3 4)))
|
(test-error (make-interval 1 '#(3 4)))
|
||||||
|
@ -1456,7 +1487,7 @@
|
||||||
;; (%%array-domain curried-sampled-array)
|
;; (%%array-domain curried-sampled-array)
|
||||||
;; (%%array-indexer curried-sampled-array))
|
;; (%%array-indexer curried-sampled-array))
|
||||||
;; (array-packed? curried-sampled-array))))
|
;; (array-packed? curried-sampled-array))))
|
||||||
|
|
||||||
;; FIXME: array-reshape tests.
|
;; FIXME: array-reshape tests.
|
||||||
|
|
||||||
;; error tests
|
;; error tests
|
||||||
|
@ -3579,7 +3610,7 @@
|
||||||
;; (array-for-each (lambda (row)
|
;; (array-for-each (lambda (row)
|
||||||
;; (pretty-print (array->list row)))
|
;; (pretty-print (array->list row)))
|
||||||
;; (array-curry b 1))
|
;; (array-curry b 1))
|
||||||
|
|
||||||
;; which prints
|
;; which prints
|
||||||
;; ((0 0) (0 1) (0 2) (0 3) (0 4))
|
;; ((0 0) (0 1) (0 2) (0 3) (0 4))
|
||||||
;; ((1 1) (1 2) (1 3) (1 4) (1 5))
|
;; ((1 1) (1 2) (1 3) (1 4) (1 5))
|
||||||
|
@ -3650,7 +3681,7 @@
|
||||||
;; edge-array))
|
;; edge-array))
|
||||||
;; "edge-test.pgm"))
|
;; "edge-test.pgm"))
|
||||||
|
|
||||||
|
|
||||||
(let ((m
|
(let ((m
|
||||||
(array-copy (make-array (make-interval '#(0 0) '#(40 30))
|
(array-copy (make-array (make-interval '#(0 0) '#(40 30))
|
||||||
(lambda (i j) (inexact (+ i j)))))))
|
(lambda (i j) (inexact (+ i j)))))))
|
||||||
|
|
Loading…
Add table
Reference in a new issue