From f4add6d188de4b04d2ec83078ee6c4d4b677546c Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sun, 26 May 2024 21:54:11 +0900 Subject: [PATCH] Fix list/vector*->array for 0 dimensions. Closes #962. --- lib/srfi/231/test.sld | 12 ++++++++---- lib/srfi/231/transforms.scm | 8 ++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/srfi/231/test.sld b/lib/srfi/231/test.sld index 32842291..07f263ab 100644 --- a/lib/srfi/231/test.sld +++ b/lib/srfi/231/test.sld @@ -1816,10 +1816,14 @@ (list*->array 2 '(((a b c) (1 2)))) (list->array (make-interval '#(1 2)) '((a b c) (1 2))))) - ;; (test-assert - ;; (array-every equal? - ;; (list*->array 0 '()) - ;; (make-array (make-interval '#()) (lambda () '())))) + (test-assert + (array-every equal? + (list*->array 0 '()) + (make-array (make-interval '#()) (lambda () '())))) + (test-assert + (array-every equal? + (vector*->array 0 '()) + (make-array (make-interval '#()) (lambda () '())))) (test-error (array-any 1 2)) (test-error (array-any list 1)) (test-error (array-any list diff --git a/lib/srfi/231/transforms.scm b/lib/srfi/231/transforms.scm index 0e4bb915..a7aa8585 100644 --- a/lib/srfi/231/transforms.scm +++ b/lib/srfi/231/transforms.scm @@ -529,7 +529,9 @@ (else (apply list->array (make-interval (list->vector (reverse lens))) - (flatten nested-ls (- dimension 1)) + (if (zero? dimension) + (list nested-ls) + (flatten nested-ls (- dimension 1))) o))))) (define (array->list* a) @@ -576,7 +578,9 @@ (else (apply list->array (make-interval (reverse-list->vector lens)) - (flatten-vector->list nested-vec (- dimension 1)) + (if (zero? dimension) + (list nested-vec) + (flatten-vector->list nested-vec (- dimension 1))) o))))) (define (dimensions-compatible? a-domain b-domain axis)