On Apr 16, 2013, at 00:47, Daniel Hartwig wrote: > Is column [4] intentionally missing from all but the first set? I was > expecting it for atleast s8vector.
I wasn't sure, but it makes sense. Then the same for bitvector, I think. What about bytevector? Should it remain a special 'raw' type? But the standards treat it like vector, so maybe it should follow the same logic. And string? -- (import (rnrs bytevectors)) (define (every-two a) (make-shared-array a (lambda (i) (list (+ 1 (* 2 i)))) 2)) (define (offset1 a) (make-shared-array a (lambda (i) (list (1- i))) `(1 ,(array-length a)))) ; [1] http://lists.gnu.org/archive/html/guile-devel/2013-04/msg00158.html ; [2] stable-2.0 [e006d87] ; [3] all array-type objects are actually arrays and support offsets, strides, etc. ; [4] D. Hartwig and I may agree on this, follows functional definition of r5rs vectors. ; -------------------------- [1] ------------ [2] --------- [3] ------ [4] (define a #(1 2 3 4)) (define b (every-two a)) (define c (offset1 a)) (vector? a) ; #t #t #t #t (vector? b) ; #f #f #t #t (vector? c) ; #f #f #t #f (vector-ref a 1) ; 2 2 2 2 (vector-ref b 1) ; bad type 4 4 4 (vector-ref c 1) ; bad type 2 1 bad type (array-ref c 1) ; 1 (define a "1234") (define b (every-two a)) (define c (offset1 a)) (string? a) ; #t #t #t (string? b) ; #f #f #t (string? c) ; #f #f #t (string-ref a 1) ; #\2 #\2 #\2 (string-ref b 1) ; bad type bad type #\4 (string-ref c 1) ; bad type bad type #\1 (array-ref c 1) ; #\1 (define a #s8(1 2 3 4)) (define b (every-two a)) (define c (offset1 a)) (s8vector? a) ; #t #t #t #t (s8vector? b) ; #f #t #t #t (s8vector? c) ; #f #t #t #f (s8vector-ref a 1) ; 2 2 2 2 (s8vector-ref b 1) ; bad type bad type 4 4 (s8vector-ref c 1) ; bad type bad type 1 bad type (array-ref c 1) ; 1 (define a #s8(1 2 3 4)) (define b (every-two a)) (define c (offset1 a)) (bytevector? a) ; #t #t #t (bytevector? b) ; #f #f #t (bytevector? c) ; #f #f #t (bytevector-s8-ref a 1) ; 2 #\2 2 (bytevector-s8-ref b 1) ; bad type bad type 4 (bytevector-s8-ref c 1) ; bad type bad type 1 (array-ref c 1) ; 1 (define a (list->bitvector '(#t #f #t #t))) ; ad syntax for vectors is broken (define b (every-two a)) (define c (offset1 a)) (bitvector? a) ; #t #t #t #t (bitvector? b) ; #f #f #t #t (bitvector? c) ; #f #f #t #f (bitvector-ref a 1) ; #f #f #f #f (bitvector-ref b 1) ; #t [bad type] #t #t #t (bitvector-ref c 1) ; #f [bad type] #f #t bad type (array-ref c 1) ; #t