chicken-users
[Top][All Lists]
Advanced

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

[Chicken-users] (array-strict? (make-array '#() 7)) ; should return #t r


From: Terrence Brannon
Subject: [Chicken-users] (array-strict? (make-array '#() 7)) ; should return #t right?
Date: Tue, 4 Sep 2007 20:38:21 -0400

(require-extension array-lib)

(array-strict? (make-array '#() 7)) ; should return #t


However, it returns false... it seems to be a strict array to me.

I do need for a 1-dimensional structure created by make-array to be
testable by some predicate for a procedure I have written called
Shape, analagous to the J verb by the same name:

#;47> (array-strict? (Shape '(8) 5))
#f
#;48> (array-strict? (Shape '(1 8) 5))
#t

In J, both of these are arrays. The first is a rank-1 array and the
second is a rank-2 array.

This is the Shape procedure:


(define (Shape dim-list . data)
  (let* ([dimension-list (if (list? dim-list) dim-list (list dim-list))]
         [prototype '#()]
         [dimensions (apply make-array-dimensions dimension-list)]
         [cardinality (apply * dimension-list)]
         [data-size (lambda () (length data))]
         [list-logic (lambda (L)
                       (cond
                        ((= (data-size) cardinality) data)
                        ((> (data-size) cardinality) (take data cardinality))
                        ((< (data-size) cardinality)
                         (take (apply circular-list data) cardinality))))]
         [data* (if (list? data)
                    (list-logic data)
                    (make-list cardinality data))]
         [vektor (list->vector data*)])
    (apply vector->array vektor prototype dimension-list)))




reply via email to

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