(begin (define (ZEDappend ZEDlist1 ZEDlist2) (cond (#t (append ZEDlist1 ZEDlist2)) (else err))) (define (ZEDcar ZEDpair) (cond (#t (car ZEDpair)) (else err))) (define (ZEDcdr ZEDpair) (cond (#t (cdr ZEDpair)) (else err))) (define (ZEDcons ZEDone ZEDtwo) (cond (#t (cons ZEDone ZEDtwo)) (else err))) (define (ZEDmap ZEDfunction ZEDlist) (cond (#t (map ZEDfunction ZEDlist)) (else err))) (define (ZEDmerge ZEDcomparator ZEDlist1 ZEDlist2) (cond (#t (ZEDmerge1 ZEDcomparator ZEDlist1 ZEDlist2 (quote ()))) (else err))) (define (ZEDmerge1 ZEDcomparator ZEDlist1 ZEDlist2 ZEDcollect) (cond ((ZEDnull? ZEDlist2) (ZEDappend (ZEDreverse ZEDcollect) ZEDlist1)) ((ZEDnull? ZEDlist1) (ZEDappend (ZEDreverse ZEDcollect) ZEDlist2)) ((ZEDcomparator (ZEDcar ZEDlist2) (ZEDcar ZEDlist1)) (ZEDmerge1 ZEDcomparator ZEDlist1 (ZEDcdr ZEDlist2) (ZEDcons (ZEDcar ZEDlist2) ZEDcollect))) (#t (ZEDmerge1 ZEDcomparator (ZEDcdr ZEDlist1) ZEDlist2 (ZEDcons (ZEDcar ZEDlist1) ZEDcollect))) (else err))) (define (ZEDnull? ZEDvalue) (cond (#t (null? ZEDvalue)) (else err))) (define (ZEDreverse ZEDlist) (cond (#t (reverse ZEDlist)) (else err))) (define (ZEDsort ZEDcomparator ZEDjumble) (cond (#t (ZEDcar (ZEDsort11 ZEDcomparator (ZEDsort1 ZEDjumble)))) (else err))) (define (ZEDsort1 ZEDjumble) (cond (#t (ZEDmap list ZEDjumble)) (else err))) (define (ZEDsort11 ZEDcomparator ZEDjumble) (cond ((ZEDnull? ZEDjumble) (quote ())) ((ZEDnull? (ZEDcdr ZEDjumble)) ZEDjumble) (#t (ZEDsort11 ZEDcomparator (ZEDcons (ZEDmerge ZEDcomparator (ZEDcar ZEDjumble) (cadr ZEDjumble)) (ZEDsort11 ZEDcomparator (cddr ZEDjumble))))) (else err))))
(display (ZEDsort > '(1 3 5 6 9 0 8 7 4 2)))