( begin ( define ( ZEDappend ZEDlist1 ZEDlist2) ( cond ( #t ( append ZEDlist1 ZEDlist2) ) ( else err) ) ) ( define ( ZEDcadr ZEDpair) ( cond ( #t ( cadr ZEDpair) ) ( else err) ) ) ( define ( ZEDcar ZEDpair) ( cond ( #t ( car ZEDpair) ) ( else err) ) ) ( define ( ZEDcddr ZEDpair) ( cond ( #t ( cddr ZEDpair) ) ( else err) ) ) ( define ( ZEDcdr ZEDpair) ( cond ( #t ( cdr ZEDpair) ) ( else err) ) ) ( define ( ZEDcons ZEDone ZEDtwo) ( cond ( #t ( cons ZEDone ZEDtwo) ) ( else err) ) ) ( define ( ZEDlist01 ZEDitem) ( cond ( #t ( list ZEDitem) ) ( else err) ) ) ( define ( ZEDmap ZEDfunction ZEDlist) ( cond ( #t ( map ZEDfunction ZEDlist) ) ( else err) ) ) ( define ( ZEDmerge ZEDcomparator ZEDlist1 ZEDlist2) ( cond ( #t ( ZEDmerge01 ZEDcomparator ZEDlist1 ZEDlist2 ( quote ( ) ) ) ) ( else err) ) ) ( define ( ZEDmerge01 ZEDcomparator ZEDlist1 ZEDlist2 ZEDcollect) ( cond ( ( ZEDnull? ZEDlist2) ( ZEDappend ( ZEDreverse ZEDcollect) ZEDlist1) ) ( ( ZEDnull? ZEDlist1) ( ZEDappend ( ZEDreverse ZEDcollect) ZEDlist2) ) ( ( ZEDcomparator ( ZEDcar ZEDlist2) ( ZEDcar ZEDlist1) ) ( ZEDmerge01 ZEDcomparator ZEDlist1 ( ZEDcdr ZEDlist2) ( ZEDcons ( ZEDcar ZEDlist2) ZEDcollect) ) ) ( #t ( ZEDmerge01 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 ( ZEDsort02 ZEDcomparator ( ZEDsort01 ZEDjumble) ) ) ) ( else err) ) ) ( define ( ZEDsort01 ZEDjumble) ( cond ( #t ( ZEDmap ZEDlist01 ZEDjumble) ) ( else err) ) ) ( define ( ZEDsort02 ZEDcomparator ZEDjumble) ( cond ( ( ZEDnull? ZEDjumble) ( quote ( ) ) ) ( ( ZEDnull? ( ZEDcdr ZEDjumble) ) ZEDjumble) ( #t ( ZEDsort02 ZEDcomparator ( ZEDcons ( ZEDmerge ZEDcomparator ( ZEDcar ZEDjumble) ( ZEDcadr ZEDjumble) ) ( ZEDsort02 ZEDcomparator ( ZEDcddr ZEDjumble) ) ) ) ) ( else err) ) ) ) ( display ( ZEDsort < '( 3 1 4 1 5 ) ) )
KGJlZ2luIChkZWZpbmUgKFpFRGFwcGVuZCBaRURsaXN0MSBaRURsaXN0MikgKGNvbmQgKCN0IChhcHBlbmQgWkVEbGlzdDEgWkVEbGlzdDIpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY2FkciBaRURwYWlyKSAoY29uZCAoI3QgKGNhZHIgWkVEcGFpcikpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjYXIgWkVEcGFpcikgKGNvbmQgKCN0IChjYXIgWkVEcGFpcikpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjZGRyIFpFRHBhaXIpIChjb25kICgjdCAoY2RkciBaRURwYWlyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNkciBaRURwYWlyKSAoY29uZCAoI3QgKGNkciBaRURwYWlyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbnMgWkVEb25lIFpFRHR3bykgKGNvbmQgKCN0IChjb25zIFpFRG9uZSBaRUR0d28pKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbGlzdDAxIFpFRGl0ZW0pIChjb25kICgjdCAobGlzdCBaRURpdGVtKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1hcCBaRURmdW5jdGlvbiBaRURsaXN0KSAoY29uZCAoI3QgKG1hcCBaRURmdW5jdGlvbiBaRURsaXN0KSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1lcmdlIFpFRGNvbXBhcmF0b3IgWkVEbGlzdDEgWkVEbGlzdDIpIChjb25kICgjdCAoWkVEbWVyZ2UwMSBaRURjb21wYXJhdG9yIFpFRGxpc3QxIFpFRGxpc3QyIChxdW90ZSAoKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbWVyZ2UwMSBaRURjb21wYXJhdG9yIFpFRGxpc3QxIFpFRGxpc3QyIFpFRGNvbGxlY3QpIChjb25kICgoWkVEbnVsbD8gWkVEbGlzdDIpIChaRURhcHBlbmQgKFpFRHJldmVyc2UgWkVEY29sbGVjdCkgWkVEbGlzdDEpKSAoKFpFRG51bGw/IFpFRGxpc3QxKSAoWkVEYXBwZW5kIChaRURyZXZlcnNlIFpFRGNvbGxlY3QpIFpFRGxpc3QyKSkgKChaRURjb21wYXJhdG9yIChaRURjYXIgWkVEbGlzdDIpIChaRURjYXIgWkVEbGlzdDEpKSAoWkVEbWVyZ2UwMSBaRURjb21wYXJhdG9yIFpFRGxpc3QxIChaRURjZHIgWkVEbGlzdDIpIChaRURjb25zIChaRURjYXIgWkVEbGlzdDIpIFpFRGNvbGxlY3QpKSkgKCN0IChaRURtZXJnZTAxIFpFRGNvbXBhcmF0b3IgKFpFRGNkciBaRURsaXN0MSkgWkVEbGlzdDIgKFpFRGNvbnMgKFpFRGNhciBaRURsaXN0MSkgWkVEY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbnVsbD8gWkVEdmFsdWUpIChjb25kICgjdCAobnVsbD8gWkVEdmFsdWUpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmV2ZXJzZSBaRURsaXN0KSAoY29uZCAoI3QgKHJldmVyc2UgWkVEbGlzdCkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzb3J0IFpFRGNvbXBhcmF0b3IgWkVEanVtYmxlKSAoY29uZCAoI3QgKFpFRGNhciAoWkVEc29ydDAyIFpFRGNvbXBhcmF0b3IgKFpFRHNvcnQwMSBaRURqdW1ibGUpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzb3J0MDEgWkVEanVtYmxlKSAoY29uZCAoI3QgKFpFRG1hcCBaRURsaXN0MDEgWkVEanVtYmxlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNvcnQwMiBaRURjb21wYXJhdG9yIFpFRGp1bWJsZSkgKGNvbmQgKChaRURudWxsPyBaRURqdW1ibGUpIChxdW90ZSAoKSkpICgoWkVEbnVsbD8gKFpFRGNkciBaRURqdW1ibGUpKSBaRURqdW1ibGUpICgjdCAoWkVEc29ydDAyIFpFRGNvbXBhcmF0b3IgKFpFRGNvbnMgKFpFRG1lcmdlIFpFRGNvbXBhcmF0b3IgKFpFRGNhciBaRURqdW1ibGUpIChaRURjYWRyIFpFRGp1bWJsZSkpIChaRURzb3J0MDIgWkVEY29tcGFyYXRvciAoWkVEY2RkciBaRURqdW1ibGUpKSkpKSAoZWxzZSBlcnIpKSkpKGRpc3BsYXkgKFpFRHNvcnQgPCAnKDMgMSA0IDEgNSkpKQ==
stdin
KGFwcGVuZCkgbGlzdDEgbGlzdDIKPT09PT09PT09CiN0cnVlCigwMDMpICZxdW90O2FwcGVuZCZxdW90OyBsaXN0MSBsaXN0MgogCihjYXIpIHBhaXIKPT09PT09PT09CiN0cnVlCigwMDIpICZxdW90O2NhciZxdW90OyBwYWlyCgooY2FkcikgcGFpcgo9PT09PT09PT0KI3RydWUKKDAwMikgJnF1b3Q7Y2FkciZxdW90OyBwYWlyCiAKKGNkcikgcGFpcgo9PT09PT09PT0KI3RydWUKKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7IHBhaXIKCihjZGRyKSBwYWlyCj09PT09PT09PQojdHJ1ZQooMDAyKSAmcXVvdDtjZGRyJnF1b3Q7IHBhaXIKIAooY29ucykgb25lIHR3bwo9PT09PT09PT0KI3RydWUKKDAwMykgJnF1b3Q7Y29ucyZxdW90OyBvbmUgdHdvCgoobGlzdDAxKSBpdGVtCj09PT09PT09PQojdHJ1ZQooMDAyKSAmcXVvdDtsaXN0JnF1b3Q7IGl0ZW0KCihtYXApIGZ1bmN0aW9uIGxpc3QKPT09PT09PT09CiN0cnVlCigwMDMpICZxdW90O21hcCZxdW90OyBmdW5jdGlvbiBsaXN0CiAKKG1lcmdlKSBjb21wYXJhdG9yIGxpc3QxIGxpc3QyCkJSSU5HIElOIEEgQ09MTEVDVCBBUkdVTUVOVAojdHJ1ZQoobWVyZ2UwMSkgY29tcGFyYXRvciBsaXN0MSBsaXN0MiBuaWwKIAoobWVyZ2UwMSkgY29tcGFyYXRvciBsaXN0MSBsaXN0MiBjb2xsZWN0CkxJU1QyIEVYSEFVU1RFRAoobnVsbD8pIGxpc3QyCihhcHBlbmQpIChyZXZlcnNlKSBjb2xsZWN0IGxpc3QxCiAKKG1lcmdlMDEpIGNvbXBhcmF0b3IgbGlzdDEgbGlzdDIgY29sbGVjdApMSVNUMSBFWEhBVVNURUQKKG51bGw/KSBsaXN0MQooYXBwZW5kKSAocmV2ZXJzZSkgY29sbGVjdCBsaXN0MgogCihtZXJnZTAxKSBjb21wYXJhdG9yIGxpc3QxIGxpc3QyIGNvbGxlY3QKTk9XIExJU1QyCigwMDMpIGNvbXBhcmF0b3IgKGNhcikgbGlzdDIgKGNhcikgbGlzdDEKKG1lcmdlMDEpIGNvbXBhcmF0b3IKICBsaXN0MQogIChjZHIpIGxpc3QyIAogIChjb25zKSAoY2FyKSBsaXN0MiBjb2xsZWN0CiAKKG1lcmdlMDEpIGNvbXBhcmF0b3IgbGlzdDEgbGlzdDIgY29sbGVjdApOT1cgTElTVDEKI3RydWUKKG1lcmdlMDEpIGNvbXBhcmF0b3IKICAoY2RyKSBsaXN0MSAKICBsaXN0MgogIChjb25zKSAoY2FyKSBsaXN0MSBjb2xsZWN0CiAKKG51bGw/KSB2YWx1ZQo9PT09PT09PT0KI3RydWUKKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgdmFsdWUKIAoocmV2ZXJzZSkgbGlzdAo9PT09PT09PT0KI3RydWUKKDAwMikgJnF1b3Q7cmV2ZXJzZSZxdW90OyBsaXN0CiAKKHNvcnQpIGNvbXBhcmF0b3IganVtYmxlClBSRVBBUkUgSlVNQkxFIEFORCBQRVJGT1JNIE1FUkdFIFBBU1NFUwojdHJ1ZQooY2FyKSAoc29ydDAyKSBjb21wYXJhdG9yIChzb3J0MDEpIGp1bWJsZQogCihzb3J0MDEpIGp1bWJsZQpQUkVQQVJFCiN0cnVlCihtYXApIGxpc3QwMSBqdW1ibGUKIAooc29ydDAyKSBjb21wYXJhdG9yIGp1bWJsZQpNRVJHRSBBTEwKKG51bGw/KSBqdW1ibGUKbmlsCiAKKHNvcnQwMikgY29tcGFyYXRvciBqdW1ibGUKT05FIExJU1QKKG51bGw/KSAoY2RyKSBqdW1ibGUKanVtYmxlCiAKKHNvcnQwMikgY29tcGFyYXRvciBqdW1ibGUKU09SVCBNRVJHRSBTT1JUCiN0cnVlCihzb3J0MDIpIGNvbXBhcmF0b3IKICAoY29ucykgKG1lcmdlKSBjb21wYXJhdG9yIChjYXIpIGp1bWJsZSAoY2FkcikganVtYmxlCiAgICAoc29ydDAyKSBjb21wYXJhdG9yIChjZGRyKSBqdW1ibGU=
(append) list1 list2
=========
#true
(003) "append" list1 list2
(car) pair
=========
#true
(002) "car" pair
(cadr) pair
=========
#true
(002) "cadr" pair
(cdr) pair
=========
#true
(002) "cdr" pair
(cddr) pair
=========
#true
(002) "cddr" pair
(cons) one two
=========
#true
(003) "cons" one two
(list01) item
=========
#true
(002) "list" item
(map) function list
=========
#true
(003) "map" function list
(merge) comparator list1 list2
BRING IN A COLLECT ARGUMENT
#true
(merge01) comparator list1 list2 nil
(merge01) comparator list1 list2 collect
LIST2 EXHAUSTED
(null?) list2
(append) (reverse) collect list1
(merge01) comparator list1 list2 collect
LIST1 EXHAUSTED
(null?) list1
(append) (reverse) collect list2
(merge01) comparator list1 list2 collect
NOW LIST2
(003) comparator (car) list2 (car) list1
(merge01) comparator
list1
(cdr) list2
(cons) (car) list2 collect
(merge01) comparator list1 list2 collect
NOW LIST1
#true
(merge01) comparator
(cdr) list1
list2
(cons) (car) list1 collect
(null?) value
=========
#true
(002) "null?" value
(reverse) list
=========
#true
(002) "reverse" list
(sort) comparator jumble
PREPARE JUMBLE AND PERFORM MERGE PASSES
#true
(car) (sort02) comparator (sort01) jumble
(sort01) jumble
PREPARE
#true
(map) list01 jumble
(sort02) comparator jumble
MERGE ALL
(null?) jumble
nil
(sort02) comparator jumble
ONE LIST
(null?) (cdr) jumble
jumble
(sort02) comparator jumble
SORT MERGE SORT
#true
(sort02) comparator
(cons) (merge) comparator (car) jumble (cadr) jumble
(sort02) comparator (cddr) jumble