Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define (list-merge! less? lst1 lst2)
- (cond
- ((null? lst1) lst2)
- ((null? lst2) lst1)
- (else
- (let ((less12? (less? (car lst1) (car lst2))))
- (let ((lst1 (if less12? (cdr lst1) lst1))
- (lst2 (if less12? lst2 (cdr lst2)))
- (result (if less12? lst1 lst2)))
- (let loop ((lst1 lst1)
- (lst2 lst2)
- (last result))
- (cond
- ((null? lst1)
- (set-cdr! last lst2)
- result)
- ((null? lst2)
- (set-cdr! last lst1)
- result)
- ((less? (car lst1) (car lst2))
- (let ((last% lst1))
- (set-cdr! last last%)
- (loop (cdr lst1) lst2 last%)))
- (else
- (let ((last% lst2))
- (set-cdr! last last%)
- (loop lst1 (cdr lst2) last%))))))))))
Advertisement
Add Comment
Please, Sign In to add comment