chemoelectric

list-merge! (without the aliases)

Mar 15th, 2026
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.81 KB | Source Code | 0 0
  1. (define (list-merge! less? lst1 lst2)
  2.   (cond
  3.     ((null? lst1) lst2)
  4.     ((null? lst2) lst1)
  5.     (else
  6.      (let ((less12? (less? (car lst1) (car lst2))))
  7.        (let ((lst1 (if less12? (cdr lst1) lst1))
  8.              (lst2 (if less12? lst2 (cdr lst2)))
  9.              (result (if less12? lst1 lst2)))
  10.          (let loop ((lst1 lst1)
  11.                     (lst2 lst2)
  12.                     (last result))
  13.            (cond
  14.              ((null? lst1)
  15.               (set-cdr! last lst2)
  16.               result)
  17.              ((null? lst2)
  18.               (set-cdr! last lst1)
  19.               result)
  20.              ((less? (car lst1) (car lst2))
  21.               (set-cdr! last lst1)
  22.               (loop (cdr lst1) lst2 lst1))
  23.              (else
  24.               (set-cdr! last lst2)
  25.               (loop lst1 (cdr lst2) lst2)))))))))
Advertisement
Add Comment
Please, Sign In to add comment