From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Daniel Llorens Newsgroups: gmane.lisp.guile.devel Subject: vector types poll Date: Mon, 15 Apr 2013 16:10:11 +0200 Message-ID: <4A332BC6-A1C2-483F-BF6E-2C06D1C8AA68@bluewin.ch> References: <9D053760-46BC-46F1-B84D-07902E777FF2@bluewin.ch> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (Apple Message framework v1085) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1366035019 24005 80.91.229.3 (15 Apr 2013 14:10:19 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 15 Apr 2013 14:10:19 +0000 (UTC) To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Apr 15 16:10:21 2013 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1URk6s-0003im-Ow for guile-devel@m.gmane.org; Mon, 15 Apr 2013 16:10:18 +0200 Original-Received: from localhost ([::1]:45285 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URk6s-0000DC-9r for guile-devel@m.gmane.org; Mon, 15 Apr 2013 10:10:18 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:49016) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URk6p-00009Y-J6 for guile-devel@gnu.org; Mon, 15 Apr 2013 10:10:17 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1URk6n-0006Af-UG for guile-devel@gnu.org; Mon, 15 Apr 2013 10:10:15 -0400 Original-Received: from zhhdzmsp-smta18.bluewin.ch ([195.186.227.133]:47110) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URk6n-0006AO-Nw for guile-devel@gnu.org; Mon, 15 Apr 2013 10:10:13 -0400 Original-Received: from [195.186.99.131] ([195.186.99.131:48953] helo=zhbdzmsp-smta13.bluewin.ch) by zhhdzmsp-smta18.bluewin.ch (envelope-from ) (ecelerity 2.2.3.47 r(39824M)) with ESMTP id A7/5E-19106-44A0C615; Mon, 15 Apr 2013 14:10:12 +0000 Original-Received: from [172.16.96.17] (62.2.203.131) by zhbdzmsp-smta13.bluewin.ch (8.5.142) (authenticated as dll@bluewin.ch) id 5100862207468369 for guile-devel@gnu.org; Mon, 15 Apr 2013 14:10:12 +0000 In-Reply-To: X-Mailer: Apple Mail (2.1085) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 195.186.227.133 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:16252 Archived-At: =09 Let's please agree on a behavior so we can start closing bugs. These are = all the objects accepted by the array interface. I've filled the table = with some ready-made choices that I think are at least internally = consistent. ; -- (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* arrays and support offsets, strides, = etc. ; [4] Common ground btw D. Hartwig and I (?), functionally 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 (s8vector? b) ; #f #t #t (s8vector? c) ; #f #t #t (s8vector-ref a 1) ; 2 2 2 (s8vector-ref b 1) ; bad type bad type 4 (s8vector-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)) (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))) ; read syntax for vectors is = broken (define b (every-two a)) (define c (offset1 a)) (bitvector? a) ; #t #t #t (bitvector? b) ; #f #f #t (bitvector? c) ; #f #f #t (bitvector-ref a 1) ; #f #f #f (bitvector-ref b 1) ; #t [bad type] #t #t (bitvector-ref c 1) ; #f [bad type] #f #t (array-ref c 1) ; #t should be bad type; to be fixed ------^ Regards, Daniel