Fixing list-copy for improper lists.

This commit is contained in:
Alex Shinn 2013-09-26 16:09:39 +09:00
parent ddfdd04a8f
commit b27143a96c

View file

@ -150,7 +150,10 @@
(if (>= i n) res (lp (+ i 1) (cons init res)))))) (if (>= i n) res (lp (+ i 1) (cons init res))))))
(define (list-copy ls) (define (list-copy ls)
(reverse (reverse ls))) (let lp ((ls ls) (res '()))
(if (pair? ls)
(lp (cdr ls) (cons (car ls) res))
(append (reverse res) ls))))
(define (list-set! ls k x) (define (list-set! ls k x)
(cond ((null? ls) (error "invalid list index")) (cond ((null? ls) (error "invalid list index"))