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? lst1 lst2))
- (lst2 (if less12? lst2 lst1)))
- (let ((result lst1))
- (let loop ((lst1 (cdr 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))
- (set-cdr! last lst1)
- (loop (cdr lst1) lst2 (cdr last)))
- (else
- (set-cdr! last lst2)
- (loop lst1 (cdr lst2) (cdr last)))))))))))
Advertisement
Add Comment
Please, Sign In to add comment