From 4677cfb85b618b724a732fc595d43ac6ca48e164 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Thu, 23 May 2024 10:38:16 +0900 Subject: [PATCH] fix vector*->array --- lib/srfi/231/test.sld | 3 +++ lib/srfi/231/transforms.scm | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/srfi/231/test.sld b/lib/srfi/231/test.sld index 45915e83..66862995 100644 --- a/lib/srfi/231/test.sld +++ b/lib/srfi/231/test.sld @@ -2558,6 +2558,9 @@ (array->vector* (make-array (make-interval '#(0 0)) error))) (test '#(#() #()) (array->vector* (make-array (make-interval '#(2 0)) error))) + + (test (list->array (make-interval '#(2 3)) '(a b c 1 2 3)) + (vector*->array 2 '#(#(a b c) #(1 2 3)))) ) (test-group "permutation tests" diff --git a/lib/srfi/231/transforms.scm b/lib/srfi/231/transforms.scm index 28419c08..590dc298 100644 --- a/lib/srfi/231/transforms.scm +++ b/lib/srfi/231/transforms.scm @@ -559,9 +559,9 @@ (vector-iota (interval-width domain 0) (interval-lower-bound domain 0))))))) -(define (flatten-vec vec) +(define (flatten-vector->list vec) (if (vector? (vector-ref vec 0)) - (append-map flatten-vec vec) + (append-map flatten-vector->list (vector->list vec)) (vector->list vec))) (define (vector*->array dimension nested-vec . o) @@ -571,8 +571,8 @@ (lp (vector-ref vec 0) (cons (vector-length vec) lens) (- d 1))) (else (apply list->array - (make-interval (list->vector (reverse lens))) - (flatten-vec nested-vec) + (make-interval (reverse-list->vector lens)) + (flatten-vector->list nested-vec) o))))) (define (dimensions-compatible? a-domain b-domain axis)