[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: vector types poll
From: |
Daniel Llorens |
Subject: |
Re: vector types poll |
Date: |
Tue, 16 Apr 2013 02:16:19 +0200 |
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
- Re: vectors are something else, (continued)
Re: vectors are something else, Mark H Weaver, 2013/04/15
Mutable top-level bindings (was: vectors are something else), Chris K. Jester-Young, 2013/04/17
Re: Mutable top-level bindings, Mark H Weaver, 2013/04/17
Re: Mutable top-level bindings, Ian Price, 2013/04/17
Re: Mutable top-level bindings, Ludovic Courtès, 2013/04/20