summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEkaitz Zarraga <ekaitz@elenq.tech>2024-01-08 22:56:07 +0100
committerEkaitz Zarraga <ekaitz@elenq.tech>2024-01-08 22:56:07 +0100
commit7bf376b7fbcca929e64b42bf08cdfce487b94bb3 (patch)
treeff4e9abff9452e9960009f0d18038b63c306c621
parentaf41e2b01d86f40f2346bb175f2abe2bf85b1946 (diff)
Fix: concatenate! work with empty lists
-rw-r--r--lib/srfi/1/misc.scm13
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))))