Fix: concatenate! work with empty lists

This commit is contained in:
Ekaitz Zarraga 2024-01-08 22:56:07 +01:00
parent af41e2b01d
commit 7bf376b7fb

View file

@ -15,12 +15,13 @@
(define (concatenate! lists) (define (concatenate! lists)
(if (null? lists) (if (null? lists)
'() '()
(let lp ((ls lists)) (fold (lambda (el acc)
(cond ((not (pair? (cdr ls))) (cond
(car lists)) ((null? acc) el)
(else ((null? el) acc)
(set-cdr! (last-pair (car ls)) (cadr ls)) (else (begin (set-cdr! (last-pair acc) el) acc))))
(lp (cdr ls))))))) (car lists)
(cdr lists))))
(define (append-reverse rev tail) (define (append-reverse rev tail)
(if (null? rev) tail (append-reverse (cdr rev) (cons (car rev) tail)))) (if (null? rev) tail (append-reverse (cdr rev) (cons (car rev) tail))))