(lambda (ls less) (let nm ((ll (map list ls))) (if (pair? ll) (if (pair? (cdr ll)) (nm (let srt ((a ll)) (if (null? a) '() (if (null? (cdr a)) a (cons (let mg ((a (car a))(b (cadr a))) (if (null? a) b (if (null? b) a (if (less (car a) (car b)) (cons (car a) (mg (cdr a) b)) (cons (car b) (mg a (cdr b))))))) (srt (cddr a))))))) (car ll)) '()))) ; test (let* ((g ((((fileVal "RC4") "Seed stuff") 'rbi) (expt 10 9))) (h (((fileVal "Do") 'DoL) (expt 10 6) (lambda (u) (g)))) (s ((fileVal "sort") h <)) (sh (apply + h)) (ss (apply + s))) (list ss (= ss sh) (or (null? s) (let ot ((x s)) (or (null? (cdr x)) (and (<= (car x) (cadr x)) (ot (cdr x)))))))) ; On MzScheme version 352 test took ; 9 seconds on one processor of an 2.4 GHz Intel Duo 2. ; 4.5 sec on one processor of an 2.7 GHz Intel Core i7.