From 7bf376b7fbcca929e64b42bf08cdfce487b94bb3 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Mon, 8 Jan 2024 22:56:07 +0100 Subject: [PATCH] Fix: concatenate! work with empty lists --- lib/srfi/1/misc.scm | 13 +++++++------ 1 file 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))))