Name: Anonymous 2021-04-25 13:19
Discuss
(define (mergesort lst)
(letrec ((merge
(lambda (l r acc)
(cond ((null? l) (append (reverse acc) r))
((null? r) (append (reverse acc) l))
((< (car l) (car r))
(merge (cdr l) r (cons (car l) acc)))
(else
(merge l (cdr r) (cons (car r) acc)))))))
(let ((n (quotient (length lst) 2)))
(if (zero? n)
lst
(merge (mergesort (take lst n))
(mergesort (list-tail lst n))
'() )))))