427 |
#f |
#f |
428 |
(lp (cdr hare) (cdr tortoise) (+ l 2))))))))) |
(lp (cdr hare) (cdr tortoise) (+ l 2))))))))) |
429 |
|
|
|
(define (concatenate l-o-l) |
|
|
(let lp ((l l-o-l) (acc '())) |
|
|
(if (null? l) |
|
|
(reverse! acc) |
|
|
(let lp0 ((ll (car l)) (acc acc)) |
|
|
(if (null? ll) |
|
|
(lp (cdr l) acc) |
|
|
(lp0 (cdr ll) (cons (car ll) acc))))))) |
|
|
|
|
|
(define (concatenate! l-o-l) |
|
|
(let lp0 ((l-o-l l-o-l)) |
|
|
(cond |
|
|
((null? l-o-l) |
|
|
'()) |
|
|
((null? (car l-o-l)) |
|
|
(lp0 (cdr l-o-l))) |
|
|
(else |
|
|
(let ((result (car l-o-l)) (tail (last-pair (car l-o-l)))) |
|
|
(let lp ((l (cdr l-o-l)) (ntail tail)) |
|
|
(if (null? l) |
|
|
result |
|
|
(begin |
|
|
(set-cdr! ntail (car l)) |
|
|
(lp (cdr l) (last-pair ntail)))))))))) |
|
|
|
|
|
|
|
430 |
(define (append-reverse rev-head tail) |
(define (append-reverse rev-head tail) |
431 |
(let lp ((l rev-head) (acc tail)) |
(let lp ((l rev-head) (acc tail)) |
432 |
(if (null? l) |
(if (null? l) |