Recall that mergesort uses a divide and conquer strategy.
Suppose we divide the list using one-part and the-other-part,
and we merge them with merge:
(define mergesort
(lambda (lst)
(cond ((null? lst) '()) ; first base case
((null? (cdr lst)) lst) ; second base case
(else (merge (mergesort (one-part lst))
(mergesort (the-other-part lst)))))))