diff options
author | Ekaitz Zarraga <ekaitz@elenq.tech> | 2024-01-08 22:56:07 +0100 |
---|---|---|
committer | Ekaitz Zarraga <ekaitz@elenq.tech> | 2024-01-08 22:56:07 +0100 |
commit | 7bf376b7fbcca929e64b42bf08cdfce487b94bb3 (patch) | |
tree | ff4e9abff9452e9960009f0d18038b63c306c621 | |
parent | af41e2b01d86f40f2346bb175f2abe2bf85b1946 (diff) |
Fix: concatenate! work with empty lists
-rw-r--r-- | lib/srfi/1/misc.scm | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/srfi/1/misc.scm b/lib/srfi/1/misc.scm index ce360dc8..843ed19d 100644 --- a/lib/srfi/1/misc.scm +++ b/lib/srfi/1/misc.scm @@ -15,12 +15,13 @@ (define (concatenate! lists) (if (null? lists) '() - (let lp ((ls lists)) - (cond ((not (pair? (cdr ls))) - (car lists)) - (else - (set-cdr! (last-pair (car ls)) (cadr ls)) - (lp (cdr ls))))))) + (fold (lambda (el acc) + (cond + ((null? acc) el) + ((null? el) acc) + (else (begin (set-cdr! (last-pair acc) el) acc)))) + (car lists) + (cdr lists)))) (define (append-reverse rev tail) (if (null? rev) tail (append-reverse (cdr rev) (cons (car rev) tail)))) |