diff --git a/lib/srfi/231.sld b/lib/srfi/231.sld index 3111f403..f3fad65f 100644 --- a/lib/srfi/231.sld +++ b/lib/srfi/231.sld @@ -33,6 +33,7 @@ u64-storage-class f8-storage-class f16-storage-class f32-storage-class f64-storage-class c64-storage-class c128-storage-class + char-storage-class storage-class-data? storage-class-data->body ;; Arrays make-array array? array-domain array-getter array-dimension diff --git a/lib/srfi/231/base.scm b/lib/srfi/231/base.scm index ef129fbf..e4a3d0c5 100644 --- a/lib/srfi/231/base.scm +++ b/lib/srfi/231/base.scm @@ -117,10 +117,12 @@ (vector-every < i (interval-ub iv))))) (define (interval-projections iv rd) - (values (make-interval (vector-copy (interval-lb iv) 0 rd) - (vector-copy (interval-ub iv) 0 rd)) - (make-interval (vector-copy (interval-lb iv) rd) - (vector-copy (interval-ub iv) rd)))) + (assert (interval? iv)) + (let ((n (vector-length (interval-lb iv)))) + (values (make-interval (vector-copy (interval-lb iv) 0 (- n rd)) + (vector-copy (interval-ub iv) 0 (- n rd))) + (make-interval (vector-copy (interval-lb iv) (- n rd)) + (vector-copy (interval-ub iv) (- n rd)))))) (define (rev-index-next! rev-index rev-lowers rev-uppers) (cond