chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] (issue) array-lib - array-copy of rank-1 array with


From: Kon Lovett
Subject: Re: [Chicken-users] (issue) array-lib - array-copy of rank-1 array with complex elements
Date: Tue, 18 Sep 2007 19:43:30 -0700


On Sep 18, 2007, at 6:47 PM, Terrence Brannon wrote:

(require-extension array-lib)

(define (rank-1 . elems)  (apply array (list (length elems)) elems))
(define a (rank-1 (make-rectangular 3 4)  (make-rectangular 6 8)))

I assume you are also using the numbers egg.


;;; http://www.call-with-current-continuation.org/eggs/array-lib.htm
;; procedure: (array-copy [PROTOTYPE] ARRAY)
;; Returns a copy of the array. When prototype is missing a deep copy is
;; performed.
(array-copy a)       ;;; Error: out of range

This is a bug; when the array is not an 'array-strict' it will fail.


;; When the prototype and the source array are the same,
;; (eq? PROTOTYPE ARRAY),
;; a fresh array is returned with the same shape, using the array as the
;; prototype.
(array-copy a a)     ;;; drops the 2nd element of the array. actually,
I'm thinking that it
;;; might be using the first element as a prototype for the rest of
the array. But the docs
;;; say it uses the array as prototype, not the first element of it.

Only the 1st, if any, element of a prototype is used for initialization. That is why the prototype procedures accept 0 or 1 parameter.

The behavior for '(array-copy <some array> <same array>)' isn't intuitive but it is working as documented.


;; Otherwise a fresh array is returned with the specified
;; prototype and elements from the array.
(array-copy '#() a)  ;;; works

It was supposed to give an copy of the array, with itself as prototype, for '(array-copy #t arr)' but that wasn't documented, nor correct. Fixed in 2.111

Best Wishes,
Kon



_______________________________________________
Chicken-users mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/chicken-users





reply via email to

[Prev in Thread] Current Thread [Next in Thread]