Commit 418d5c8 1 parent f9e3ed1 commit 418d5c8 Copy full SHA for 418d5c8
File tree 2 files changed +29
-7
lines changed
2 files changed +29
-7
lines changed Original file line number Diff line number Diff line change 1821
1821
(array-every equal?
1822
1822
(list*->array 0 '() )
1823
1823
(make-array (make-interval '# ()) (lambda () '()))))
1824
+ (test-assert
1825
+ (array-every equal?
1826
+ (list*->array 1 '() )
1827
+ (make-array (make-interval '# (0 )) (lambda () '()))))
1828
+ (test-assert
1829
+ (array-every equal?
1830
+ (list*->array 2 '() )
1831
+ (make-array (make-interval '# (0 0 )) (lambda () '()))))
1824
1832
(test-assert
1825
1833
(array-every equal?
1826
1834
(vector*->array 0 '() )
1827
1835
(make-array (make-interval '# ()) (lambda () '()))))
1836
+ (test-assert
1837
+ (array-every equal?
1838
+ (vector*->array 1 '() )
1839
+ (make-array (make-interval '# (0 )) (lambda () '()))))
1840
+ (test-assert
1841
+ (array-every equal?
1842
+ (vector*->array 2 '() )
1843
+ (make-array (make-interval '# (0 0 )) (lambda () '()))))
1828
1844
(test-error (array-any 1 2 ))
1829
1845
(test-error (array-any list 1 ))
1830
1846
(test-error (array-any list
Original file line number Diff line number Diff line change 524
524
(error " can't reshape" array new-domain)))))
525
525
526
526
(define (flatten ls d )
527
- (if (and (positive? d) (pair? (car ls)))
527
+ (if (and (positive? d) (pair? ls) ( pair? (car ls)))
528
528
(append-map (lambda (x ) (flatten x (- d 1 ))) ls)
529
529
ls))
530
530
531
531
(define (list*->array dimension nested-ls . o )
532
532
(let lp ((ls nested-ls) (lens '() ) (d dimension))
533
533
(cond
534
534
((positive? d)
535
- (lp (car ls) (cons (length ls) lens) (- d 1 )))
535
+ (if (null? ls)
536
+ (lp '() (cons 0 lens) (- d 1 ))
537
+ (lp (car ls) (cons (length ls) lens) (- d 1 ))))
536
538
(else
537
539
(apply list->array
538
540
(make-interval (list->vector (reverse lens)))
572
574
(interval-lower-bound domain 0 )))))))
573
575
574
576
(define (flatten-vector->list vec d )
575
- (if (and (positive? d) (vector? (vector-ref vec 0 )))
576
- (append-map (lambda (x ) (flatten-vector->list x (- d 1 )))
577
- (vector->list vec))
578
- (vector->list vec)))
577
+ (cond
578
+ ((not (vector? vec)) '() )
579
+ ((and (positive? d) (vector? (vector-ref vec 0 )))
580
+ (append-map (lambda (x ) (flatten-vector->list x (- d 1 )))
581
+ (vector->list vec)))
582
+ (else (vector->list vec))))
579
583
580
584
(define (vector*->array dimension nested-vec . o )
581
585
(let lp ((vec nested-vec) (lens '() ) (d dimension))
582
586
(cond
583
587
((positive? d)
584
- (lp (vector-ref vec 0 ) (cons (vector-length vec) lens) (- d 1 )))
588
+ (if (vector? vec)
589
+ (lp (vector-ref vec 0 ) (cons (vector-length vec) lens) (- d 1 ))
590
+ (lp vec (cons 0 lens) (- d 1 ))))
585
591
(else
586
592
(apply list->array
587
593
(make-interval (reverse-list->vector lens))
You can’t perform that action at this time.
0 commit comments