diff --git a/src/mred/wrap/mred.ss b/src/mred/wrap/mred.ss index dccf8c27..2e541534 100644 --- a/src/mred/wrap/mred.ss +++ b/src/mred/wrap/mred.ss @@ -4686,26 +4686,27 @@ (let ([l (with-handlers ([void (lambda (x) null)]) (directory-list dir))] [dot? (send dot-check get-value)]) - (letrec ([sort (lambda (l) - (if (or (null? l) (null? (cdr l))) - l - (let-values ([(l1 l2) (split l null null)]) - (merge (sort l1) (sort l2)))))] - [split (lambda (l l1 l2) - (cond - [(null? l) (values l1 l2)] - [(null? (cdr l)) (values (cons (car l) l1) l2)] - [else (split (cddr l) (cons (car l) l1) (cons (cadr l) l2))]))] + (letrec ([split (lambda (n l) + (if (null? l) + '(() . ()) + (if (< n 1) + (cons (list (car l)) (cdr l)) + (let ([n (quotient n 2)]) + (let* ([r1 (split n l)] + [r2 (split n (cdr r1))]) + (cons (merge (car r1) (car r2)) (cdr r2)))))))] [merge (lambda (l1 l2) (cond [(null? l1) l2] [(null? l2) l1] - [(string