Thursday, May 9, 2013

Racket 5.3.6

#lang racket/gui
(provide my-compile)
(begin (define (ZEDfi function list) (if (null? list) ZEDnil (if (function (ZED1 list)) (ZEDc (ZED1 list) (ZEDfi function (ZED! list))) (ZEDfi function (ZED! list))))) (define-syntax ZEDlet* (syntax-rules () ((_ a b) (let* a b)))) (define (ZEDrd final function list) (foldr function final (ZEDzed->racket list))) (define (ZEDgrr garbage value) (begin (ZEDdrr garbage) value)) (define (ZEDgr garbage value) (begin (ZEDdr garbage) value)) (define (ZEDdrr value) (begin (display (ZEDpr value) (ZEDdefault-output-port)) (begin (newline (ZEDdefault-output-port)) (begin (newline (ZEDdefault-output-port)) value)))) (define (ZEDZEDdr value) (if (pair? value) (ZEDmp ZEDZEDdr (ZEDfirst 64 value)) value)) (define (ZEDdr value) (begin (display (ZEDpr (ZEDZEDdr value)) (ZEDdefault-output-port)) (begin (newline (ZEDdefault-output-port)) (begin (newline (ZEDdefault-output-port)) value)))) (define (ZEDpr value) (ZEDcall-with-output-string ((ZEDcurry display) (ZEDZEDpr value)))) (define (ZEDZEDpr value) (if (char? value) (string-append "#" (list->string (ZEDwrap value))) (if (string? value) (string-append "\"" (string-append value "\"")) (if (not (pair? value)) value (cons (ZEDZEDpr (ZED1 value)) (ZEDZEDpr (ZED! value))))))) (define (ZEDfirst integer list) (if (not (pair? list)) list (if (= integer 0) ZEDnil (ZEDc (ZED1 list) (ZEDfirst (- integer 1) (ZED! list)))))) (define (ZEDmp function list) (if (null? list) ZEDnil (if (pair? list) (ZEDc (function (ZED1 list)) (ZEDmp function (ZED! list))) (function list)))) (define ZEDdefault-output-port current-output-port) (define (ZEDzed->racket value) (if (not (pair? value)) value (cons (ZEDzed->racket (ZED1 value)) (ZEDzed->racket (ZED! value))))) (define ZEDcall-with-output-string call-with-output-string) (define ZEDcurry curry) (define ZEDwrap list) (define ZEDwrap2 list) (define ZEDwrap3 list) (define ZEDwrap4 list) (define ZEDwrap5 list) (define ZEDwrap6 list) (define ZEDwrap7 list) (define ZEDwrap8 list) (define ZEDwrap9 list) (define ZEDwrap10 list) (define ZEDwrap11 list) (define ZEDwrap12 list) (define ZEDwrap13 list) (define ZEDwrap14 list) (define ZEDwrap15 list) (define ZEDwrap16 list) (define-syntax ZEDand (syntax-rules () ((_ a b) (and a b)))) (define-syntax ZEDor (syntax-rules () ((_ a b) (or a b)))) (define-syntax ZEDse (syntax-rules () ((_ a b) (begin a b)))) (define-syntax ZEDc (syntax-rules () ((_ a b) (cons (delay a) (delay b))))) (define (ZED1 pair) (force (car pair))) (define (ZED! pair) (force (cdr pair))) (define ZED= eqv?) (define ZEDerr (quote err)) (define ZEDnil (quote ())) (define (ZEDalways) #t) (define-syntax apply1 (syntax-rules () ((_ a b c d) (apply a b c d)))) (define-syntax apply2 (syntax-rules () ((_ a b c d e f) (apply a b c d e f)))) (define-syntax apply3 (syntax-rules () ((_ a b c d e f g h) (apply a b c d e f g h)))) (define-syntax apply4 (syntax-rules () ((_ a b c d e f g h i j) (apply a b c d e f g h i j)))) (define-syntax apply5 (syntax-rules () ((_ a b c d e f g h i j k l) (apply a b c d e f g h i j k l)))) (define-syntax ZEDquote (syntax-rules () ((_ a) (quote a)))))
(begin (define (ZED* ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (* ZEDnumber1 ZEDnumber2)) (else ZEDerr))) (define (ZED+ ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (+ ZEDnumber1 ZEDnumber2)) (else ZEDerr))) (define (ZED- ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (- ZEDnumber1 ZEDnumber2)) (else ZEDerr))) (define (ZED-10 ZEDlist) (cond ((ZEDalways) (ZEDtails 10 ZEDlist)) (else ZEDerr))) (define (ZED-2 ZEDlist) (cond ((ZEDalways) (ZEDtails 2 ZEDlist)) (else ZEDerr))) (define (ZED-3 ZEDlist) (cond ((ZEDalways) (ZEDtails 3 ZEDlist)) (else ZEDerr))) (define (ZED-4 ZEDlist) (cond ((ZEDalways) (ZEDtails 4 ZEDlist)) (else ZEDerr))) (define (ZED-5 ZEDlist) (cond ((ZEDalways) (ZEDtails 5 ZEDlist)) (else ZEDerr))) (define (ZED-6 ZEDlist) (cond ((ZEDalways) (ZEDtails 6 ZEDlist)) (else ZEDerr))) (define (ZED-7 ZEDlist) (cond ((ZEDalways) (ZEDtails 7 ZEDlist)) (else ZEDerr))) (define (ZED-8 ZEDlist) (cond ((ZEDalways) (ZEDtails 8 ZEDlist)) (else ZEDerr))) (define (ZED-9 ZEDlist) (cond ((ZEDalways) (ZEDtails 9 ZEDlist)) (else ZEDerr))) (define (ZED/ ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (/ ZEDnumber1 ZEDnumber2)) (else ZEDerr))) (define (ZED10 ZEDlist) (cond ((ZEDalways) (ZEDref 10 ZEDlist)) (else ZEDerr))) (define (ZED2 ZEDlist) (cond ((ZEDalways) (ZEDref 2 ZEDlist)) (else ZEDerr))) (define (ZED3 ZEDlist) (cond ((ZEDalways) (ZEDref 3 ZEDlist)) (else ZEDerr))) (define (ZED4 ZEDlist) (cond ((ZEDalways) (ZEDref 4 ZEDlist)) (else ZEDerr))) (define (ZED5 ZEDlist) (cond ((ZEDalways) (ZEDref 5 ZEDlist)) (else ZEDerr))) (define (ZED6 ZEDlist) (cond ((ZEDalways) (ZEDref 6 ZEDlist)) (else ZEDerr))) (define (ZED7 ZEDlist) (cond ((ZEDalways) (ZEDref 7 ZEDlist)) (else ZEDerr))) (define (ZED8 ZEDlist) (cond ((ZEDalways) (ZEDref 8 ZEDlist)) (else ZEDerr))) (define (ZED9 ZEDlist) (cond ((ZEDalways) (ZEDref 9 ZEDlist)) (else ZEDerr))) (define (ZED< ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (< ZEDnumber1 ZEDnumber2)) (else ZEDerr))) (define (ZED> ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (> ZEDnumber1 ZEDnumber2)) (else ZEDerr))) (define (ZEDadd-between ZEDitem ZEDlist) (cond ((ZEDnull? ZEDlist) ZEDnil) ((ZEDnull? (ZED! ZEDlist)) ZEDlist) ((ZEDnot (ZEDnull? (ZED! ZEDlist))) (ZEDc (ZED1 ZEDlist) (ZEDc ZEDitem (ZEDadd-between ZEDitem (ZED! ZEDlist))))) (else ZEDerr))) (define (ZEDadd1 ZEDnumber) (cond ((ZEDalways) (add1 ZEDnumber)) (else ZEDerr))) (define (ZEDappend ZEDlist1 ZEDlist2) (cond ((ZEDnull? ZEDlist1) ZEDlist2) ((ZEDalways) (ZEDc (ZED1 ZEDlist1) (ZEDappend (ZED! ZEDlist1) ZEDlist2))) (else ZEDerr))) (define (ZEDappend-output-file ZEDpath) (cond ((ZEDalways) (open-output-file ZEDpath #:exists 'append)) (else ZEDerr))) (define (ZEDbit ZEDgenerator) (cond ((ZEDalways) (ZED= 2 (ZEDrandom ZEDgenerator 2))) (else ZEDerr))) (define (ZEDbits ZEDruns) (cond ((ZEDalways) (ZEDreduce-append (ZEDZEDbits ZEDruns))) (else ZEDerr))) (define (ZEDZEDbits ZEDruns) (cond ((ZEDnull? ZEDruns) ZEDnil) ((ZEDalways) (ZEDc (ZEDappend (ZEDrepeat (ZEDsub1 (ZED1 ZEDruns)) #t) (ZEDwrap #f)) (ZEDZEDbits (ZED! ZEDruns)))) (else ZEDerr))) (define (ZEDbits->byte ZEDbits) (cond ((ZEDalways) (ZEDZEDbits->byte ZEDbits 0)) (else ZEDerr))) (define (ZEDZEDbits->byte ZEDbits ZEDaccumulator) (cond ((ZEDnull? ZEDbits) ZEDaccumulator) ((ZED1 ZEDbits) (ZEDZEDbits->byte (ZED! ZEDbits) (ZEDadd1 (ZED* 2 ZEDaccumulator)))) ((ZEDalways) (ZEDZEDbits->byte (ZED! ZEDbits) (ZED* 2 ZEDaccumulator))) (else ZEDerr))) (define (ZEDbits->bytes ZEDbits) (cond ((ZEDalways) (ZEDmp ZEDbits->byte (ZEDZEDbits->bytes ZEDbits))) (else ZEDerr))) (define (ZEDZEDbits->bytes ZEDbits) (cond ((ZEDnull? ZEDbits) ZEDnil) ((ZEDalways) (ZEDc (ZEDfirst 8 ZEDbits) (ZEDZEDbits->bytes (ZED-8 ZEDbits)))) (else ZEDerr))) (define (ZEDboolean? ZEDvalue) (cond ((ZEDalways) (boolean? ZEDvalue)) (else ZEDerr))) (define (ZEDbyte->bits ZEDbyte) (cond ((ZEDalways) (ZEDappend (ZEDrepeat (ZED- 8 (ZEDlength (ZEDZEDbyte->bits ZEDbyte))) #f) (ZEDreverse (ZEDZEDbyte->bits ZEDbyte)))) (else ZEDerr))) (define (ZEDZEDbyte->bits ZEDbyte) (cond ((ZEDzero? ZEDbyte) ZEDnil) ((ZEDodd? ZEDbyte) (ZEDc #t (ZEDZEDbyte->bits (ZEDhalve (ZEDsub1 ZEDbyte))))) ((ZEDeven? ZEDbyte) (ZEDc #f (ZEDZEDbyte->bits (ZEDhalve ZEDbyte)))) (else ZEDerr))) (define (ZEDbyte-string->path ZEDbyte-string) (cond ((ZEDalways) (bytes->path ZEDbyte-string)) (else ZEDerr))) (define (ZEDbyte-string-append ZEDbyte-string1 ZEDbyte-string2) (cond ((ZEDalways) (bytes-append ZEDbyte-string1 ZEDbyte-string2)) (else ZEDerr))) (define (ZEDbytes->bits ZEDbytes) (cond ((ZEDalways) (ZEDreduce-append (ZEDmp ZEDbyte->bits ZEDbytes))) (else ZEDerr))) (define (ZEDcharacter->integer ZEDcharacter) (cond ((ZEDalways) (char->integer ZEDcharacter)) (else ZEDerr))) (define (ZEDcharacter->string ZEDcharacter) (cond ((ZEDalways) (list->string (ZEDwrap ZEDcharacter))) (else ZEDerr))) (define (ZEDcharacter? ZEDvalue) (cond ((ZEDalways) (char? ZEDvalue)) (else ZEDerr))) (define (ZEDclose-input-port ZEDport) (cond ((ZEDalways) (close-input-port ZEDport)) (else ZEDerr))) (define (ZEDclose-output-port ZEDport) (cond ((ZEDalways) (close-output-port ZEDport)) (else ZEDerr))) (define (ZEDcollect-garbage) (cond ((ZEDalways) (collect-garbage)) (else ZEDerr))) (define (ZEDcount ZEDnumber) (cond ((ZEDalways) (ZEDc ZEDnumber (ZEDcount (ZEDadd1 ZEDnumber)))) (else ZEDerr))) (define (ZEDcurrent-directory) (cond ((ZEDalways) (current-directory)) (else ZEDerr))) (define (ZEDcurrent-memory-use) (cond ((ZEDalways) (current-memory-use)) (else ZEDerr))) (define (ZEDcurrent-random-number-generator) (cond ((ZEDalways) (current-pseudo-random-generator)) (else ZEDerr))) (define (ZEDdefault-input-port) (cond ((ZEDalways) (current-input-port)) (else ZEDerr))) (define (ZEDdelay ZEDvalue) (cond ((ZEDalways) (delay ZEDvalue)) (else ZEDerr))) (define (ZEDdelete-file ZEDpath) (cond ((ZEDalways) (delete-file ZEDpath)) (else ZEDerr))) (define (ZEDdelete-file-if-exists ZEDpath) (cond ((ZEDfile-exists? ZEDpath) (ZEDdelete-file ZEDpath)) (else ZEDerr))) (define (ZEDdenominator ZEDnumber) (cond ((ZEDalways) (denominator ZEDnumber)) (else ZEDerr))) (define (ZEDdisplay ZEDport ZEDitem) (cond ((ZEDalways) (display ZEDitem ZEDport)) (else ZEDerr))) (define (ZEDend-of-file-object) (cond ((ZEDalways) eof) (else ZEDerr))) (define (ZEDend-of-file-object? ZEDvalue) (cond ((ZEDalways) (eof-object? ZEDvalue)) (else ZEDerr))) (define (ZEDeq? ZEDsymbol1 ZEDsymbol2) (cond ((ZEDalways) (eq? ZEDsymbol1 ZEDsymbol2)) (else ZEDerr))) (define (ZEDequal? ZEDlist1 ZEDlist2) (cond ((ZEDor (ZEDnull? ZEDlist1) (ZEDnull? ZEDlist2)) (ZEDand (ZEDnull? ZEDlist1) (ZEDnull? ZEDlist2))) ((ZEDor (ZEDnot (ZEDpair? ZEDlist1)) (ZEDnot (ZEDpair? ZEDlist2))) (equal? ZEDlist1 ZEDlist2)) ((ZEDalways) (ZEDand (ZEDequal? (ZED1 ZEDlist1) (ZED1 ZEDlist2)) (ZEDequal? (ZED! ZEDlist1) (ZED! ZEDlist2)))) (else ZEDerr))) (define (ZEDeven? ZEDinteger) (cond ((ZEDalways) (even? ZEDinteger)) (else ZEDerr))) (define (ZEDexact->inexact ZEDnumber) (cond ((ZEDalways) (exact->inexact ZEDnumber)) (else ZEDerr))) (define (ZEDfile-exists? ZEDpath) (cond ((ZEDalways) (file-exists? ZEDpath)) (else ZEDerr))) (define (ZEDfile-size ZEDpath) (cond ((ZEDalways) (file-size ZEDpath)) (else ZEDerr))) (define (ZEDforce ZEDvalue) (cond ((ZEDalways) (force ZEDvalue)) (else ZEDerr))) (define (ZEDgenerate-symbol ZEDbase) (cond ((ZEDalways) (gensym ZEDbase)) (else ZEDerr))) (define (ZEDget-file ZEDmessage) (cond ((ZEDalways) (get-file ZEDmessage)) (else ZEDerr))) (define (ZEDget-run ZEDbits) (cond ((ZED1 ZEDbits) (ZED+ 1 (ZEDget-run (ZED! ZEDbits)))) ((ZEDalways) 1) (else ZEDerr))) (define (ZEDget-text-from-user ZEDtitle ZEDmessage) (cond ((ZEDalways) (get-text-from-user ZEDtitle ZEDmessage)) (else ZEDerr))) (define (ZEDhalve ZEDnumber) (cond ((ZEDalways) (ZED/ ZEDnumber 2)) (else ZEDerr))) (define (ZEDlast ZEDlist) (cond ((ZEDnull? ZEDlist) ZEDerr) ((ZEDnull? (ZED! ZEDlist)) (ZED1 ZEDlist)) ((ZEDalways) (ZEDlast (ZED! ZEDlist))) (else ZEDerr))) (define (ZEDlength ZEDlist) (cond ((ZEDnull? ZEDlist) 0) ((ZEDalways) (ZEDadd1 (ZEDlength (ZED! ZEDlist)))) (else ZEDerr))) (define (ZEDlist->string ZEDlist) (cond ((ZEDalways) (apply string-append (flatten (ZEDZEDlist->string ZEDlist)))) (else ZEDerr))) (define (ZEDZEDlist->string ZEDlist) (cond ((ZEDnull? ZEDlist) ZEDnil) ((ZEDnot (ZEDpair? ZEDlist)) (ZEDZEDlist->string (ZEDwrap2 "," ZEDlist))) ((ZEDnull? (ZED1 ZEDlist)) (ZEDZEDlist->string (ZED! ZEDlist))) ((ZEDpair? (ZED1 ZEDlist)) (cons (ZEDZEDlist->string (ZED1 ZEDlist)) (ZEDZEDlist->string (ZED! ZEDlist)))) ((ZEDalways) (cons (ZEDcall-with-output-string ((ZEDcurry display) (ZED1 ZEDlist))) (ZEDZEDlist->string (ZED! ZEDlist)))) (else ZEDerr))) (define (ZEDlist? ZEDvalue) (cond ((ZEDnull? ZEDvalue) #t) ((ZEDpair? ZEDvalue) (ZEDlist? (ZED! ZEDvalue))) ((ZEDalways) #f) (else ZEDerr))) (define (ZEDmake-random-number-generator) (cond ((ZEDalways) (make-pseudo-random-generator)) (else ZEDerr))) (define (ZEDmany ZEDfunction ZEDcount ZEDvalue) (cond ((ZED< ZEDcount 1) ZEDvalue) ((ZEDalways) (ZEDmany ZEDfunction (ZEDsub1 ZEDcount) (ZEDfunction ZEDvalue))) (else ZEDerr))) (define (ZEDmaximum ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (max ZEDnumber1 ZEDnumber2)) (else ZEDerr))) (define (ZEDmember? ZEDvalue ZEDlist) (cond ((ZEDnull? ZEDlist) #f) ((ZED= ZEDvalue (ZED1 ZEDlist)) #t) ((ZEDalways) (ZEDmember? ZEDvalue (ZED! ZEDlist))) (else ZEDerr))) (define (ZEDmessage ZEDlist) (cond ((ZEDalways) (ZEDlist->string (ZEDadd-between #\space ZEDlist))) (else ZEDerr))) (define (ZEDmessage-box ZEDtitle ZEDmessage) (cond ((ZEDalways) (message-box ZEDtitle ZEDmessage)) (else ZEDerr))) (define (ZEDmodulo ZEDinteger1 ZEDinteger2) (cond ((ZEDalways) (modulo ZEDinteger1 ZEDinteger2)) (else ZEDerr))) (define (ZEDmultiple? ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (ZED= 1 (ZEDdenominator (ZED/ ZEDnumber2 ZEDnumber1)))) (else ZEDerr))) (define (ZEDnegative? ZEDnumber) (cond ((ZEDalways) (ZED< ZEDnumber 0)) (else ZEDerr))) (define (ZEDnewline ZEDport) (cond ((ZEDalways) (newline ZEDport)) (else ZEDerr))) (define (ZEDnon ZEDruns) (cond ((ZED= 1 (ZED1 ZEDruns)) (ZEDnon (ZED! ZEDruns))) ((ZEDalways) (ZED1 ZEDruns)) (else ZEDerr))) (define (ZEDnot ZEDboolean) (cond ((ZEDalways) (not ZEDboolean)) (else ZEDerr))) (define (ZEDnull? ZEDvalue) (cond ((ZEDalways) (null? ZEDvalue)) (else ZEDerr))) (define (ZEDnumber->string ZEDnumber) (cond ((ZEDalways) (number->string ZEDnumber)) (else ZEDerr))) (define (ZEDnumber? ZEDvalue) (cond ((ZEDalways) (number? ZEDvalue)) (else ZEDerr))) (define (ZEDodd? ZEDinteger) (cond ((ZEDalways) (odd? ZEDinteger)) (else ZEDerr))) (define (ZEDones ZEDruns) (cond ((ZED= 1 (ZED1 ZEDruns)) (ZEDadd1 (ZEDones (ZED! ZEDruns)))) ((ZEDalways) 0) (else ZEDerr))) (define (ZEDopen-input-file ZEDpath) (cond ((ZEDalways) (open-input-file ZEDpath)) (else ZEDerr))) (define (ZEDopen-output-file ZEDpath) (cond ((ZEDalways) (open-output-file ZEDpath)) (else ZEDerr))) (define (ZEDpair? ZEDvalue) (cond ((ZEDalways) (pair? ZEDvalue)) (else ZEDerr))) (define (ZEDpath->byte-string ZEDpath) (cond ((ZEDalways) (path->bytes ZEDpath)) (else ZEDerr))) (define (ZEDpositive? ZEDnumber) (cond ((ZEDalways) (ZED> ZEDnumber 0)) (else ZEDerr))) (define (ZEDpredictable-random-bits ZEDseed) (cond ((ZEDalways) (ZEDse (current-pseudo-random-generator (ZEDmake-random-number-generator)) (ZEDse (ZEDrandom-seed ZEDseed) (ZEDZEDpredictable-random-bits1 (ZEDcurrent-random-number-generator))))) (else ZEDerr))) (define (ZEDZEDpredictable-random-bits1 ZEDgenerator) (cond ((ZEDalways) (ZEDZEDpredictable-random-bits2 (ZEDbit ZEDgenerator) ZEDgenerator)) (else ZEDerr))) (define (ZEDZEDpredictable-random-bits2 ZEDbit ZEDgenerator) (cond ((ZEDalways) (ZEDc ZEDbit (ZEDZEDpredictable-random-bits1 ZEDgenerator))) (else ZEDerr))) (define (ZEDput-file ZEDmessage) (cond ((ZEDalways) (put-file ZEDmessage)) (else ZEDerr))) (define (ZEDquotient ZEDinteger1 ZEDinteger2) (cond ((ZEDalways) (quotient ZEDinteger1 ZEDinteger2)) (else ZEDerr))) (define (ZEDraise ZEDnumber1 ZEDnumber2) (cond ((ZEDalways) (expt ZEDnumber1 ZEDnumber2)) (else ZEDerr))) (define (ZEDrandom ZEDgenerator ZEDinteger) (cond ((ZEDalways) (ZEDadd1 (random ZEDinteger ZEDgenerator))) (else ZEDerr))) (define (ZEDrandom-number-generator->vector ZEDgenerator) (cond ((ZEDalways) (pseudo-random-generator->vector ZEDgenerator)) (else ZEDerr))) (define (ZEDrandom-number-generator-vector? ZEDvalue) (cond ((ZEDalways) (pseudo-random-generator-vector? ZEDvalue)) (else ZEDerr))) (define (ZEDrandom-number-generator? ZEDvalue) (cond ((ZEDalways) (pseudo-random-generator? ZEDvalue)) (else ZEDerr))) (define (ZEDrandom-seed ZEDinteger) (cond ((ZEDalways) (random-seed ZEDinteger)) (else ZEDerr))) (define (ZEDread ZEDport) (cond ((ZEDalways) (read ZEDport)) (else ZEDerr))) (define (ZEDread-byte ZEDport) (cond ((ZEDalways) (read-byte ZEDport)) (else ZEDerr))) (define (ZEDread-bytes ZEDpath) (cond ((ZEDalways) (ZEDZEDread-bytes1 (ZEDopen-input-file ZEDpath))) (else ZEDerr))) (define (ZEDZEDread-bytes1 ZEDport) (cond ((ZEDalways) (ZEDZEDread-bytes2 ZEDport (ZEDread-byte ZEDport))) (else ZEDerr))) (define (ZEDZEDread-bytes2 ZEDport ZEDbyte) (cond ((ZEDend-of-file-object? ZEDbyte) (ZEDse (ZEDclose-input-port ZEDport) ZEDnil)) ((ZEDalways) (ZEDc ZEDbyte (ZEDZEDread-bytes1 ZEDport))) (else ZEDerr))) (define (ZEDreduce ZEDfinal ZEDfunction ZEDlist) (cond ((ZEDalways) (foldr ZEDfunction ZEDfinal (ZEDzed->racket ZEDlist))) (else ZEDerr))) (define (ZEDreduce-append ZEDlist) (cond ((ZEDalways) (ZEDreduce ZEDnil ZEDappend ZEDlist)) (else ZEDerr))) (define (ZEDref ZEDinteger ZEDlist) (cond ((ZED= ZEDinteger 1) (ZED1 ZEDlist)) ((ZED> ZEDinteger 1) (ZEDref (ZEDsub1 ZEDinteger) (ZED! ZEDlist))) (else ZEDerr))) (define (ZEDremove ZEDvalue ZEDlist) (cond ((ZEDnull? ZEDlist) ZEDnil) ((ZED= ZEDvalue (ZED1 ZEDlist)) (ZED! ZEDlist)) ((ZEDalways) (ZEDc (ZED1 ZEDlist) (ZEDremove ZEDvalue (ZED! ZEDlist)))) (else ZEDerr))) (define (ZEDremove-with-equal ZEDvalue ZEDlist) (cond ((ZEDnull? ZEDlist) ZEDnil) ((ZEDequal? ZEDvalue (ZED1 ZEDlist)) (ZED! ZEDlist)) ((ZEDalways) (ZEDc (ZED1 ZEDlist) (ZEDremove-with-equal ZEDvalue (ZED! ZEDlist)))) (else ZEDerr))) (define (ZEDrepeat ZEDinteger ZEDitem) (cond ((ZEDzero? ZEDinteger) ZEDnil) ((ZEDpositive? ZEDinteger) (ZEDc ZEDitem (ZEDrepeat (ZEDsub1 ZEDinteger) ZEDitem))) (else ZEDerr))) (define (ZEDreplace-output-file ZEDpath) (cond ((ZEDalways) (open-output-file ZEDpath #:exists 'replace)) (else ZEDerr))) (define (ZEDreverse ZEDlist) (cond ((ZEDalways) (ZEDZEDreverse ZEDlist ZEDnil)) (else ZEDerr))) (define (ZEDZEDreverse ZEDlist ZEDreverse) (cond ((ZEDnull? ZEDlist) ZEDreverse) ((ZEDalways) (ZEDZEDreverse (ZED! ZEDlist) (ZEDc (ZED1 ZEDlist) ZEDreverse))) (else ZEDerr))) (define (ZEDruns ZEDbits) (cond ((ZEDalways) (ZEDZEDruns ZEDbits (ZEDget-run ZEDbits))) (else ZEDerr))) (define (ZEDZEDruns ZEDbits ZEDrun) (cond ((ZEDnull? ZEDbits) ZEDnil) ((ZEDalways) (ZEDc ZEDrun (ZEDruns (ZEDtails ZEDrun ZEDbits)))) (else ZEDerr))) (define (ZEDsort ZEDcomparator ZEDlist) (cond ((ZEDalways) (sort (ZEDzed->racket ZEDlist) ZEDcomparator)) (else ZEDerr))) (define (ZEDsp) (cond ((ZEDalways) (ZEDcharacter->string #\space)) (else ZEDerr))) (define (ZEDspace ZEDport) (cond ((ZEDalways) (ZEDdisplay ZEDport #\space)) (else ZEDerr))) (define (ZEDsquare ZEDnumber) (cond ((ZEDalways) (ZED* ZEDnumber ZEDnumber)) (else ZEDerr))) (define (ZEDsquare-root ZEDnumber) (cond ((ZEDalways) (sqrt ZEDnumber)) (else ZEDerr))) (define (ZEDstring->list ZEDstring) (cond ((ZEDalways) (string->list ZEDstring)) (else ZEDerr))) (define (ZEDstring? ZEDvalue) (cond ((ZEDalways) (string? ZEDvalue)) (else ZEDerr))) (define (ZEDsub1 ZEDnumber) (cond ((ZEDalways) (sub1 ZEDnumber)) (else ZEDerr))) (define (ZEDsum ZEDnumbers) (cond ((ZEDalways) (ZEDreduce 0 ZED+ ZEDnumbers)) (else ZEDerr))) (define (ZEDsymbol->string ZEDsymbol) (cond ((ZEDalways) (symbol->string ZEDsymbol)) (else ZEDerr))) (define (ZEDsymbol? ZEDvalue) (cond ((ZEDalways) (symbol? ZEDvalue)) (else ZEDerr))) (define (ZEDtails ZEDinteger ZEDlist) (cond ((ZEDor (ZEDnull? ZEDlist) (ZED= ZEDinteger 0)) ZEDlist) ((ZED> ZEDinteger 0) (ZEDtails (ZEDsub1 ZEDinteger) (ZED! ZEDlist))) (else ZEDerr))) (define (ZEDvector->random-number-generator ZEDvector) (cond ((ZEDalways) (vector->pseudo-random-generator ZEDvector)) (else ZEDerr))) (define (ZEDwrite-byte ZEDport ZEDbyte) (cond ((ZEDalways) (write-byte ZEDbyte ZEDport)) (else ZEDerr))) (define (ZEDwrite-bytes ZEDpath ZEDbytes) (cond ((ZEDalways) (ZEDZEDwrite-bytes (ZEDopen-output-file ZEDpath) ZEDbytes)) (else ZEDerr))) (define (ZEDZEDwrite-bytes ZEDport ZEDbytes) (cond ((ZEDnull? ZEDbytes) (ZEDclose-output-port ZEDport)) ((ZEDalways) (ZEDse (ZEDwrite-byte ZEDport (ZED1 ZEDbytes)) (ZEDZEDwrite-bytes ZEDport (ZED! ZEDbytes)))) (else ZEDerr))) (define (ZEDxor ZEDbit1 ZEDbit2) (cond ((ZEDand (ZEDboolean? ZEDbit1) (ZEDboolean? ZEDbit2)) (ZEDnot (ZED= ZEDbit1 ZEDbit2))) (else ZEDerr))) (define (ZEDzero? ZEDnumber) (cond ((ZEDalways) (ZED= ZEDnumber 0)) (else ZEDerr))) (define (ZEDzip ZEDbits1 ZEDbits2) (cond ((ZEDor (ZEDnull? ZEDbits1) (ZEDnull? ZEDbits2)) ZEDnil) ((ZEDalways) (ZEDc (ZEDxor (ZED1 ZEDbits1) (ZED1 ZEDbits2)) (ZEDzip (ZED! ZEDbits1) (ZED! ZEDbits2)))) (else ZEDerr))) (define (my-flatten tree) (cond ((not (pair? tree)) tree) ((null? (car tree)) (my-flatten (cdr tree))) ((pair? (car tree)) (append (my-flatten (car tree)) (my-flatten (cdr tree)))) ((ZEDalways) (cons (car tree) (my-flatten (cdr tree)))) (else ZEDerr))) (define (remove-leading number list) (cond ((null? list) ZEDnil) ((= number 0) list) ((> number 0) (remove-leading (- number 1) (cdr list))) (else ZEDerr))) (define (ZEDefy string) (cond ((ZEDalways) (string->symbol (list->string (append (ZEDwrap3 #\Z #\E #\D) (my-flatten (map symbol-character (string->list string))))))) (else ZEDerr))) (define (symbol-character character) (cond ((ZED= character #\[) (ZEDwrap2 #\@ #\1)) ((ZED= character #\]) (ZEDwrap2 #\@ #\2)) ((ZED= character #\{) (ZEDwrap2 #\@ #\3)) ((ZED= character #\}) (ZEDwrap2 #\@ #\4)) ((ZED= character #\') (ZEDwrap2 #\@ #\q)) ((ZED= character #\`) (ZEDwrap2 #\@ #\Q)) ((ZED= character #\,) (ZEDwrap2 #\@ #\c)) ((ZED= character #\;) (ZEDwrap2 #\@ #\s)) ((ZED= character #\\) (ZEDwrap2 #\@ #\b)) ((not (char-graphic? character)) (ZEDwrap2 #\@ #\w)) ((char-graphic? character) character) (else ZEDerr))) (define (clause-name clause) (cond ((ZEDalways) (car clause)) (else ZEDerr))) (define (clause-arguments clause) (cond ((ZEDalways) (cadr clause)) (else ZEDerr))) (define (clause-arity clause) (cond ((ZEDalways) (length (clause-arguments clause))) (else ZEDerr))) (define (clause-body clause) (cond ((ZEDalways) (cddr clause)) (else ZEDerr))) (define (clause-name-agree clause1 clause2) (cond ((eq? (clause-name clause1) (clause-name clause2)) (clause-name clause1)) (else ZEDerr))) (define (clause-arguments-agree clause1 clause2) (cond ((equal? (clause-arguments clause1) (clause-arguments clause2)) (clause-arguments clause1)) (else ZEDerr))) (define (combine-clauses clause1 clause2) (cond ((ZEDalways) (cons (clause-name-agree clause1 clause2) (cons (clause-arguments-agree clause1 clause2) (append (clause-body clause1) (clause-body clause2))))) (else ZEDerr))) (define (combine-head-clauses program) (cond ((ZEDalways) (cons (combine-clauses (car program) (cadr program)) (cddr program))) (else ZEDerr))) (define (ready-clause clause) (cond ((ZEDalways) (cons (caaar clause) (cons (cdar clause) (cdr clause)))) (else ZEDerr))) (define (ready-program program) (cond ((ZEDalways) (map ready-clause program)) (else ZEDerr))) (define (combine-all program) (cond ((null? program) ZEDnil) ((null? (cdr program)) program) ((ZED= (clause-name (car program)) (clause-name (cadr program))) (combine-all (combine-head-clauses program))) ((not (ZED= (clause-name (car program)) (clause-name (cadr program)))) (cons (car program) (combine-all (cdr program)))) (else ZEDerr))) (define (combine-program-clauses program) (cond ((ZEDalways) (combine-all (ready-program program))) (else ZEDerr))) (define (arity-hash program) (cond ((ZEDalways) (make-hasheq (append (map arity-hash1 program) (append (ZEDwrap12 (cons 'ZEDfi 2) (cons 'ZEDlet* 2) (cons 'ZEDrd 3) (cons 'ZEDgrr 2) (cons 'ZEDgr 2) (cons 'ZEDdrr 1) (cons 'ZEDZEDdr 1) (cons 'ZEDdr 1) (cons 'ZEDpr 1) (cons 'ZEDZEDpr 1) (cons 'ZEDfirst 2) (cons 'ZEDmp 2)) (append (ZEDwrap5 (cons 'ZEDdefault-output-port 0) (cons 'ZEDzed->racket 1) (cons 'if 3) (cons 'ZEDcall-with-output-string 1) (cons 'ZEDcurry 1)) (append (ZEDwrap16 (cons 'and 2) (cons 'append 2) (cons 'assoc 2) (cons 'begin 2) (cons 'boolean? 1) (cons 'caaar 1) (cons 'cadr 1) (cons 'caddr 1) (cons 'cadddr 1) (cons 'car 1) (cons 'cdar 1) (cons 'cddddr 1) (cons 'cddr 1) (cons 'cdr 1) (cons 'char? 1) (cons 'char-numeric? 1)) (append (ZEDwrap16 (cons 'char-graphic? 1) (cons 'close-input-port 1) (cons 'close-output-port 1) (cons 'cons 2) (cons 'define 2) (cons 'delete-file 1) (cons 'display 2) (cons 'eq? 2) (cons 'equal? 2) (cons 'eof-object? 1) (cons 'exact? 1) (cons 'file-exists? 1) (cons 'inexact? 1) (cons 'length 1) (cons 'list->string 1) (cons 'map 2)) (append (ZEDwrap16 (cons 'not 1) (cons 'null? 1) (cons 'number? 1) (cons 'newline 1) (cons 'number->string 1) (cons 'or 2) (cons 'open-input-file 1) (cons 'open-output-file 1) (cons 'pair? 1) (cons 'quote 1) (cons 'reverse 1) (cons 'read-char 1) (cons 'symbol? 1) (cons 'string? 1) (cons 'string-append 2) (cons 'string->symbol 1)) (append (ZEDwrap16 (cons 'symbol->string 1) (cons 'string->list 1) (cons 'string->number 1) (cons '= 2) (cons '< 2) (cons '> 2) (cons '- 2) (cons '+ 2) (cons '* 2) (cons '/ 2) (cons 'ZED1 1) (cons 'ZED! 1) (cons 'ZEDc 2) (cons 'ZED001 1) (cons 'ZED002 2) (cons 'ZED003 3)) (append (ZEDwrap16 (cons 'ZED004 4) (cons 'ZED005 5) (cons 'ZED006 6) (cons 'ZED007 7) (cons 'ZED008 8) (cons 'ZED009 9) (cons 'ZED010 10) (cons 'force 1) (cons 'ZED= 2) (cons 'caar 1) (cons 'cdddr 1) (cons 'list 0) (cons 'ZEDalways 0) (cons 'apply 2) (cons 'ZEDse 2) (cons 'ZEDand 2)) (append (ZEDwrap16 (cons 'ZEDor 2) (cons 'ZED011 11) (cons 'ZED012 12) (cons 'ZED013 13) (cons 'ZED014 14) (cons 'ZED015 15) (cons 'ZED016 16) (cons 'ZED017 17) (cons 'ZED018 18) (cons 'ZED019 19) (cons 'ZED020 20) (cons 'ZED021 21) (cons 'ZED022 22) (cons 'ZED023 23) (cons 'ZED024 24) (cons 'ZED025 25)) (append (ZEDwrap16 (cons 'ZED026 26) (cons 'ZED027 27) (cons 'ZED028 28) (cons 'ZED029 29) (cons 'ZED030 30) (cons 'ZED031 31) (cons 'ZED032 32) (cons 'get-file 0) (cons 'make-hasheq 1) (cons 'hash-ref 2) (cons 'apply1 4) (cons 'apply2 6) (cons 'apply3 8) (cons 'apply4 10) (cons 'apply5 12) (cons 'filter 2)) (append (ZEDwrap16 (cons 'foldr 3) (cons 'function-hack-2 2) (cons 'write-char 2) (cons 'ZED033 33) (cons 'ZED034 34) (cons 'ZED035 35) (cons 'ZED036 36) (cons 'ZED037 37) (cons 'ZED038 38) (cons 'ZED039 39) (cons 'ZED040 40) (cons 'ZED041 41) (cons 'ZED042 42) (cons 'ZED043 43) (cons 'ZED044 44) (cons 'ZED045 45)) (append (ZEDwrap16 (cons 'ZED046 46) (cons 'ZED047 47) (cons 'ZED048 48) (cons 'ZED049 49) (cons 'ZED050 50) (cons 'ZED051 51) (cons 'ZED052 52) (cons 'ZED053 53) (cons 'ZED054 54) (cons 'ZED055 55) (cons 'ZED056 56) (cons 'ZED057 57) (cons 'ZED058 58) (cons 'ZED059 59) (cons 'ZED060 60) (cons 'ZED061 61)) (append (ZEDwrap16 (cons 'ZED062 62) (cons 'ZED063 63) (cons 'ZED064 64) (cons 'ZED065 65) (cons 'ZED066 66) (cons 'ZED067 67) (cons 'ZED068 68) (cons 'ZED069 69) (cons 'ZED070 70) (cons 'ZED071 71) (cons 'ZED072 72) (cons 'ZED073 73) (cons 'ZED074 74) (cons 'ZED075 75) (cons 'ZED076 76) (cons 'ZED077 77)) (append (ZEDwrap16 (cons 'ZED078 78) (cons 'ZED079 79) (cons 'ZED080 80) (cons 'ZED081 81) (cons 'ZED082 82) (cons 'ZED083 83) (cons 'ZED084 84) (cons 'ZED085 85) (cons 'ZED086 86) (cons 'ZED087 87) (cons 'ZED088 88) (cons 'ZED089 89) (cons 'ZED090 90) (cons 'ZED091 91) (cons 'ZED092 92) (cons 'ZED093 93)) (append (ZEDwrap16 (cons 'ZEDwrap 1) (cons 'ZEDwrap2 2) (cons 'ZEDwrap3 3) (cons 'ZEDwrap4 4) (cons 'ZEDwrap5 5) (cons 'ZEDwrap6 6) (cons 'ZEDwrap7 7) (cons 'ZEDwrap8 8) (cons 'ZEDwrap9 9) (cons 'ZEDwrap10 10) (cons 'ZEDwrap11 11) (cons 'ZEDwrap12 12) (cons 'ZEDwrap13 13) (cons 'ZEDwrap14 14) (cons 'ZEDwrap15 15) (cons 'ZEDwrap16 16)) (ZEDwrap7 (cons 'ZED094 94) (cons 'ZED095 95) (cons 'ZED096 96) (cons 'ZED097 97) (cons 'ZED098 98) (cons 'ZED099 99) (cons 'ZEDquote 1))))))))))))))))))) (else ZEDerr))) (define (arity-hash1 clause) (cond ((ZEDalways) (cons (clause-name clause) (clause-arity clause))) (else ZEDerr))) (define (arity arity-hash function) (cond ((ZEDalways) (hash-ref arity-hash function)) (else ZEDerr))) (define (primitives) (cond ((ZEDalways) (append (ZEDwrap 'begin) (append (ZEDwrap12 (quote (define (ZEDfi function list) (if (null? list) ZEDnil (if (function (ZED1 list)) (ZEDc (ZED1 list) (ZEDfi function (ZED! list))) (ZEDfi function (ZED! list)))))) (ZEDwrap3 'define-syntax 'ZEDlet* (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap3 '_ 'a 'b) (ZEDwrap3 'let* 'a 'b)))) (quote (define (ZEDrd final function list) (foldr function final (ZEDzed->racket list)))) (quote (define (ZEDgrr garbage value) (begin (ZEDdrr garbage) value))) (quote (define (ZEDgr garbage value) (begin (ZEDdr garbage) value))) (quote (define (ZEDdrr value) (begin (display (ZEDpr value) (ZEDdefault-output-port)) (begin (newline (ZEDdefault-output-port)) (begin (newline (ZEDdefault-output-port)) value))))) (quote (define (ZEDZEDdr value) (if (pair? value) (ZEDmp ZEDZEDdr (ZEDfirst 64 value)) value))) (quote (define (ZEDdr value) (begin (display (ZEDpr (ZEDZEDdr value)) (ZEDdefault-output-port)) (begin (newline (ZEDdefault-output-port)) (begin (newline (ZEDdefault-output-port)) value))))) (quote (define (ZEDpr value) (ZEDcall-with-output-string ((ZEDcurry display) (ZEDZEDpr value))))) (quote (define (ZEDZEDpr value) (if (char? value) (string-append "\"#\"" (list->string (ZEDwrap value))) (if (string? value) (string-append "\"\\\"\"" (string-append value "\"\\\"\"")) (if (not (pair? value)) value (cons (ZEDZEDpr (ZED1 value)) (ZEDZEDpr (ZED! value)))))))) (quote (define (ZEDfirst integer list) (if (not (pair? list)) list (if (= integer 0) ZEDnil (ZEDc (ZED1 list) (ZEDfirst (- integer 1) (ZED! list))))))) (quote (define (ZEDmp function list) (if (null? list) ZEDnil (if (pair? list) (ZEDc (function (ZED1 list)) (ZEDmp function (ZED! list))) (function list)))))) (append (ZEDwrap3 (quote (define ZEDdefault-output-port current-output-port)) (quote (define (ZEDzed->racket value) (if (not (pair? value)) value (cons (ZEDzed->racket (ZED1 value)) (ZEDzed->racket (ZED! value)))))) (quote (define ZEDcall-with-output-string call-with-output-string))) (append (ZEDwrap16 (quote (define ZEDcurry curry)) (quote (define ZEDwrap list)) (quote (define ZEDwrap2 list)) (quote (define ZEDwrap3 list)) (quote (define ZEDwrap4 list)) (quote (define ZEDwrap5 list)) (quote (define ZEDwrap6 list)) (quote (define ZEDwrap7 list)) (quote (define ZEDwrap8 list)) (quote (define ZEDwrap9 list)) (quote (define ZEDwrap10 list)) (quote (define ZEDwrap11 list)) (quote (define ZEDwrap12 list)) (quote (define ZEDwrap13 list)) (quote (define ZEDwrap14 list)) (quote (define ZEDwrap15 list))) (append (ZEDwrap16 (quote (define ZEDwrap16 list)) (ZEDwrap3 'define-syntax 'ZEDand (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap3 '_ 'a 'b) (ZEDwrap3 'and 'a 'b)))) (ZEDwrap3 'define-syntax 'ZEDor (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap3 '_ 'a 'b) (ZEDwrap3 'or 'a 'b)))) (ZEDwrap3 'define-syntax 'ZEDse (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap3 '_ 'a 'b) (ZEDwrap3 'begin 'a 'b)))) (ZEDwrap3 'define-syntax 'ZEDc (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap3 '_ 'a 'b) (ZEDwrap3 'cons (ZEDwrap2 'delay 'a) (ZEDwrap2 'delay 'b))))) (quote (define (ZED1 pair) (force (car pair)))) (quote (define (ZED! pair) (force (cdr pair)))) (quote (define ZED= eqv?)) (quote (define ZEDerr 'err)) (ZEDwrap3 'define 'ZEDnil (ZEDwrap2 'quote ZEDnil)) (quote (define (ZEDalways) #true)) (ZEDwrap3 'define-syntax 'apply1 (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap5 '_ 'a 'b 'c 'd) (ZEDwrap5 'apply 'a 'b 'c 'd)))) (ZEDwrap3 'define-syntax 'apply2 (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap7 '_ 'a 'b 'c 'd 'e 'f) (ZEDwrap7 'apply 'a 'b 'c 'd 'e 'f)))) (ZEDwrap3 'define-syntax 'apply3 (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap9 '_ 'a 'b 'c 'd 'e 'f 'g 'h) (ZEDwrap9 'apply 'a 'b 'c 'd 'e 'f 'g 'h)))) (ZEDwrap3 'define-syntax 'apply4 (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap11 '_ 'a 'b 'c 'd 'e 'f 'g 'h 'i 'j) (ZEDwrap11 'apply 'a 'b 'c 'd 'e 'f 'g 'h 'i 'j)))) (ZEDwrap3 'define-syntax 'apply5 (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap13 '_ 'a 'b 'c 'd 'e 'f 'g 'h 'i 'j 'k 'l) (ZEDwrap13 'apply 'a 'b 'c 'd 'e 'f 'g 'h 'i 'j 'k 'l))))) (ZEDwrap (ZEDwrap3 'define-syntax 'ZEDquote (ZEDwrap3 'syntax-rules ZEDnil (ZEDwrap2 (ZEDwrap2 '_ 'a) (ZEDwrap2 'quote 'a))))))))))) (else ZEDerr))) (define (application? expression) (cond ((ZEDalways) (and (not (null? expression)) (pair? (car expression)))) (else ZEDerr))) (define (function expression) (cond ((ZEDalways) (caar expression)) (else ZEDerr))) (define (double-application? expression) (cond ((null? expression) #false) ((null? (cdr expression)) #false) ((ZEDalways) (and (pair? (car expression)) (pair? (cadr expression)))) (else ZEDerr))) (define (schemefy expression arity-hash) (cond ((ZEDalways) (ZEDwrap (schemefy1 expression arity-hash))) (else ZEDerr))) (define (schemefy1 expression arity-hash) (cond ((not (application? expression)) (car expression)) ((ZED= 0 (arity arity-hash (function expression))) (car expression)) ((double-application? expression) (schemefy2 expression arity-hash (schemefy1 (cdr expression) arity-hash))) ((application? expression) (cons (function expression) (gather (arity arity-hash (function expression)) (cdr expression) arity-hash))) (else ZEDerr))) (define (schemefy2 expression arity-hash schemefied) (cond ((ZEDalways) (cons (function expression) (cons schemefied (gather (- (arity arity-hash (function expression)) 1) (remove-leading (+ 1 (length (my-flatten schemefied))) expression) arity-hash)))) (else ZEDerr))) (define (gather how-many expression arity-hash) (cond ((= how-many 0) ZEDnil) ((application? expression) (gather1 how-many expression arity-hash (schemefy expression arity-hash))) ((not (application? expression)) (cons (car expression) (gather (- how-many 1) (cdr expression) arity-hash))) (else ZEDerr))) (define (gather1 how-many expression arity-hash schemefied) (cond ((ZEDalways) (append schemefied (gather (- how-many 1) (remove-leading (length (my-flatten schemefied)) expression) arity-hash))) (else ZEDerr))) (define (map-with function list extra) (cond ((null? list) ZEDnil) ((not (null? list)) (cons (function (car list) extra) (map-with function (cdr list) extra))) (else ZEDerr))) (define (functionize clause arity-hash) (cond ((ZEDalways) (ZEDwrap3 'define (cons (clause-name clause) (clause-arguments clause)) (cons 'cond (append (condefy (map-with schemefy (clause-body clause) arity-hash)) (ZEDwrap (ZEDwrap2 'else 'ZEDerr)))))) (else ZEDerr))) (define (condefy expressions) (cond ((null? expressions) ZEDnil) ((ZEDalways) (cons (append (car expressions) (cadr expressions)) (condefy (cddr expressions)))) (else ZEDerr))) (define (programize program arity-hash) (cond ((ZEDalways) (cons 'begin (map-with functionize program arity-hash))) (else ZEDerr))) (define (namefy part) (cond ((pair? part) (ZEDwrap (symbolize (car part)))) ((not (pair? part)) (flexefy part)) (else ZEDerr))) (define (symbolize part) (cond ((symbol? part) (ZEDefy (symbol->string part))) ((string? part) (string->symbol part)) (else ZEDerr))) (define (flexefy part) (cond ((symbol? part) (flexefy1 (string->list (symbol->string part)))) ((string? part) (string->symbol part)) ((exact? part) part) ((inexact? part) (string->number (string-append "#e" (number->string part)))) (else ZEDerr))) (define (flexefy1 list) (cond ((and (ZED= #\# (car list)) (and (ZED= #\0 (cadr list)) (not (null? (cddr list))))) (string->symbol (list->string (append (ZEDwrap3 #\# #\\ #\u) (cddr list))))) ((equal? list (ZEDwrap5 #\# #\t #\r #\u #\e)) #true) ((equal? list (ZEDwrap6 #\# #\f #\a #\l #\s #\e)) #false) ((ZED= (car list) #\#) (string->symbol (list->string (append (ZEDwrap2 #\# #\\) (cdr list))))) ((not (ZED= (car list) #\#)) (ZEDefy (list->string list))) (else ZEDerr))) (define (read-all! port) (cond ((ZEDalways) (read-all1 port (read-char port))) (else ZEDerr))) (define (read-all1 port character) (cond ((eof-object? character) (begin (close-input-port port) ZEDnil)) ((not (eof-object? character)) (cons character (read-all! port))) (else ZEDerr))) (define (newline-space program) (cond ((ZEDalways) (append (newline-space-again program) (ZEDwrap #\newline))) (else ZEDerr))) (define (newline-space1 program) (cond ((null? program) ZEDnil) ((null? (cdr program)) program) ((and (ZED= #\newline (car program)) (or (ZED= #\space (cadr program)) (ZED= #\tab (cadr program)))) (newline-space1 (cdr program))) ((ZED= #\newline (car program)) (cons #\newline (newline-space1 (cdr program)))) ((not (ZED= #\newline (car program))) (cons (car program) (newline-space1 (cdr program)))) (else ZEDerr))) (define (newline-space-again program) (cond ((ZEDalways) (newline-space-again1 program (newline-space1 program))) (else ZEDerr))) (define (newline-space-again1 program transformed-program) (cond ((equal? program transformed-program) program) ((ZEDalways) (newline-space-again transformed-program)) (else ZEDerr))) (define (newline-space-tab-repeats program) (cond ((null? program) ZEDnil) ((null? (cdr program)) program) ((and (ZED= #\newline (car program)) (ZED= #\newline (cadr program))) (newline-space-tab-repeats (cdr program))) ((and (or (ZED= #\space (car program)) (ZED= #\tab (car program))) (or (ZED= #\space (cadr program)) (ZED= #\tab (cadr program)))) (newline-space-tab-repeats (cdr program))) ((ZEDalways) (cons (car program) (newline-space-tab-repeats (cdr program)))) (else ZEDerr))) (define (tab-replace program) (cond ((null? program) ZEDnil) ((ZED= #\tab (car program)) (cons #\space (tab-replace (cdr program)))) ((ZEDalways) (cons (car program) (tab-replace (cdr program)))) (else ZEDerr))) (define (space-newline program) (cond ((null? program) ZEDnil) ((null? (cdr program)) program) ((and (ZED= #\space (car program)) (ZED= #\newline (cadr program))) (space-newline (cdr program))) ((ZEDalways) (cons (car program) (space-newline (cdr program)))) (else ZEDerr))) (define (leading-newlines program) (cond ((null? program) ZEDnil) ((ZED= #\newline (car program)) (cdr program)) ((ZEDalways) program) (else ZEDerr))) (define (sentences program) (cond ((ZEDalways) (sentences1 program ZEDnil)) (else ZEDerr))) (define (sentences1 program accumulator) (cond ((null? program) ZEDnil) ((ZED= #\newline (car program)) (cons (reverse accumulator) (sentences1 (cdr program) ZEDnil))) ((ZEDalways) (sentences1 (cdr program) (cons (car program) accumulator))) (else ZEDerr))) (define (discard-comments program) (cond ((null? program) ZEDnil) ((ZEDalways) (cons (car program) (cons (caddr program) (cons (cadddr program) (discard-comments (cddddr program)))))) (else ZEDerr))) (define (debug-sentence sentence) (cond ((null? sentence) ZEDnil) ((ZED= #\space (car sentence)) (debug-sentence (cdr sentence))) ((ZED= #\( (car sentence)) (debug-sentence1 sentence (gather-verb (cdr sentence)))) ((ZEDalways) (cons (namefy (noun (gather-noun sentence))) (debug-sentence (remove-leading (length (gather-noun sentence)) sentence)))) (else ZEDerr))) (define (debug-sentence1 sentence gather-verb) (cond ((ZEDalways) (debug-sentence2 sentence gather-verb (verb gather-verb))) (else ZEDerr))) (define (debug-sentence2 sentence gather-verb verb) (cond ((or (ZED= verb 'c) (or (ZED= verb 'let*) (or (ZED= verb '|001|) (or (ZED= verb '|002|) (or (ZED= verb '|003|) (or (ZED= verb '|004|) (or (ZED= verb '|005|) (or (ZED= verb '|006|) (or (ZED= verb '|007|) (or (ZED= verb '|008|) (or (ZED= verb '|009|) (or (ZED= verb '|010|) (or (ZED= verb '|011|) (or (ZED= verb '|012|) (or (ZED= verb '|013|) (or (ZED= verb '|014|) (or (ZED= verb '|015|) (or (ZED= verb '|016|) (or (ZED= verb '|017|) (or (ZED= verb '|018|) (or (ZED= verb '|019|) (or (ZED= verb '|020|) (or (ZED= verb '|021|) (or (ZED= verb '|022|) (or (ZED= verb '|023|) (or (ZED= verb '|024|) (or (ZED= verb '|025|) (or (ZED= verb '|026|) (or (ZED= verb '|027|) (or (ZED= verb '|028|) (or (ZED= verb '|029|) (or (ZED= verb '|030|) (or (ZED= verb '|031|) (or (ZED= verb '|032|) (or (ZED= verb '|033|) (or (ZED= verb '|034|) (or (ZED= verb '|035|) (or (ZED= verb '|036|) (or (ZED= verb '|037|) (or (ZED= verb '|038|) (or (ZED= verb '|039|) (or (ZED= verb '|040|) (or (ZED= verb '|041|) (or (ZED= verb '|042|) (or (ZED= verb '|043|) (or (ZED= verb '|044|) (or (ZED= verb '|045|) (or (ZED= verb '|046|) (or (ZED= verb '|047|) (or (ZED= verb '|048|) (or (ZED= verb '|049|) (or (ZED= verb '|050|) (or (ZED= verb '|051|) (or (ZED= verb '|052|) (or (ZED= verb '|053|) (or (ZED= verb '|054|) (or (ZED= verb '|055|) (or (ZED= verb '|056|) (or (ZED= verb '|057|) (or (ZED= verb '|058|) (or (ZED= verb '|059|) (or (ZED= verb '|060|) (or (ZED= verb '|061|) (or (ZED= verb '|062|) (or (ZED= verb '|063|) (or (ZED= verb '|064|) (or (ZED= verb '|065|) (or (ZED= verb '|066|) (or (ZED= verb '|067|) (or (ZED= verb '|068|) (or (ZED= verb '|069|) (or (ZED= verb '|070|) (or (ZED= verb '|071|) (or (ZED= verb '|072|) (or (ZED= verb '|073|) (or (ZED= verb '|074|) (or (ZED= verb '|075|) (or (ZED= verb '|076|) (or (ZED= verb '|077|) (or (ZED= verb '|078|) (or (ZED= verb '|079|) (or (ZED= verb '|080|) (or (ZED= verb '|081|) (or (ZED= verb '|082|) (or (ZED= verb '|083|) (or (ZED= verb '|084|) (or (ZED= verb '|085|) (or (ZED= verb '|086|) (or (ZED= verb '|087|) (or (ZED= verb '|088|) (or (ZED= verb '|089|) (or (ZED= verb '|090|) (or (ZED= verb '|091|) (or (ZED= verb '|092|) (or (ZED= verb '|093|) (or (ZED= verb '|094|) (or (ZED= verb '|095|) (or (ZED= verb '|096|) (or (ZED= verb '|097|) (or (ZED= verb '|098|) (ZED= verb '|099|))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (cons (ZEDwrap 'ZEDgrr) (cons (string-append "\"" (string-append (list->string (foldr append ZEDnil (map slashefy sentence))) "\"")) (cons (namefy (ZEDwrap verb)) (read-sentence (remove-leading (+ 2 (length gather-verb)) sentence)))))) ((ZEDalways) (cons (ZEDwrap 'ZEDdr) (cons (ZEDwrap 'ZEDgrr) (cons (string-append "\"" (string-append (list->string (foldr append ZEDnil (map slashefy sentence))) "\"")) (cons (namefy (ZEDwrap verb)) (debug-sentence (remove-leading (+ 2 (length gather-verb)) sentence))))))) (else ZEDerr))) (define (slashefy ZEDcharacter) (cond ((ZED= #\" ZEDcharacter) (ZEDwrap2 #\\ #\")) ((ZEDalways) (ZEDwrap ZEDcharacter)) (else ZEDerr))) (define (read-sentence sentence) (cond ((null? sentence) ZEDnil) ((ZED= #\space (car sentence)) (read-sentence (cdr sentence))) ((ZED= #\( (car sentence)) (read-sentence1 sentence (gather-verb (cdr sentence)))) ((ZEDalways) (cons (namefy (noun (gather-noun sentence))) (read-sentence (remove-leading (length (gather-noun sentence)) sentence)))) (else ZEDerr))) (define (read-sentence1 sentence gather-verb) (cond ((ZEDalways) (cons (namefy (ZEDwrap (verb gather-verb))) (read-sentence (remove-leading (+ 2 (length gather-verb)) sentence)))) (else ZEDerr))) (define (verb gather-verb) (cond ((and (not (null? (cdr gather-verb))) (and (ZED= #\" (car gather-verb)) (ZED= #\" (car (reverse gather-verb))))) (list->string (cdr (reverse (cdr (reverse gather-verb)))))) ((ZEDalways) (string->symbol (list->string gather-verb))) (else ZEDerr))) (define (noun gather-noun) (cond ((ZEDalways) (noun-number (ZEDlist->string gather-noun) (string->number (ZEDlist->string gather-noun)))) (else ZEDerr))) (define (noun-number noun number) (cond ((ZEDalways) (noun-number1 noun number)) (else ZEDerr))) (define (noun-number1 noun number) (cond (number number) ((and (ZED= #\" (car (string->list noun))) (ZED= #\" (car (reverse (string->list noun))))) (list->string (cdr (reverse (cdr (reverse (string->list noun))))))) ((ZEDalways) (string->symbol noun)) (else ZEDerr))) (define (debug-sentences sentences) (cond ((null? sentences) ZEDnil) ((ZEDalways) (cons (read-sentence (car sentences)) (cons (debug-sentence (cadr sentences)) (cons (debug-sentence (caddr sentences)) (debug-sentences (cdddr sentences)))))) (else ZEDerr))) (define (read-sentences sentences) (cond ((ZEDalways) (map read-sentence sentences)) (else ZEDerr))) (define (gather-verb sentence) (cond ((ZED= #\) (car sentence)) ZEDnil) ((ZEDalways) (cons (car sentence) (gather-verb (cdr sentence)))) (else ZEDerr))) (define (gather-noun sentence) (cond ((null? sentence) ZEDnil) ((ZED= #\space (car sentence)) ZEDnil) ((ZEDalways) (cons (car sentence) (gather-noun (cdr sentence)))) (else ZEDerr))) (define (by-three program) (cond ((null? program) ZEDnil) ((ZEDalways) (cons (ZEDwrap3 (car program) (cadr program) (caddr program)) (by-three (cdddr program)))) (else ZEDerr))) (define (replace-candidate candidate) (cond ((null? candidate) ZEDnil) ((ZED= #\( (car candidate)) (cons #\( (replace-candidate (cdr candidate)))) ((ZEDalways) ZEDnil) (else ZEDerr))) (define (candidate-confirmed? candidate exemplar) (cond ((null? exemplar) (or (null? candidate) (or (ZED= #\space (car candidate)) (ZED= #\tab (car candidate))))) ((null? candidate) #false) ((ZED= #\( (car candidate)) (candidate-confirmed? (cdr candidate) exemplar)) ((ZEDalways) (and (ZED= (car candidate) (car exemplar)) (candidate-confirmed? (cdr candidate) (cdr exemplar)))) (else ZEDerr))) (define (grab-candidate program) (cond ((null? program) ZEDnil) ((or (ZED= #\space (car program)) (ZED= #\tab (car program))) (grab-candidate1 program)) ((ZEDalways) (cons (car program) (grab-candidate (cdr program)))) (else ZEDerr))) (define (grab-candidate1 program) (cond ((null? program) ZEDnil) ((ZED= #\space (car program)) (cons #\space (grab-candidate1 (cdr program)))) ((ZED= #\tab (car program)) (cons #\tab (grab-candidate1 (cdr program)))) ((ZEDalways) ZEDnil) (else ZEDerr))) (define (strip program) (cond ((ZEDalways) (foldr append ZEDnil (map strip3 (strip1 program)))) (else ZEDerr))) (define (strip1 program) (cond ((null? program) ZEDnil) ((ZED= (car program) #\() (strip2 (grab-candidate program) program)) ((ZEDalways) (cons (ZEDwrap (car program)) (strip1 (cdr program)))) (else ZEDerr))) (define (strip2 candidate program) (cond ((ZEDalways) (cons candidate (strip1 (remove-leading (length candidate) program)))) (else ZEDerr))) (define (strip3 candidate) (cond ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\0 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\1 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\2 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\3 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\4 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\5 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\6 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\7 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\8 #\9)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\0)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\1)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\2)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\3)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\4)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\5)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\6)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\7)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\8)) (replace-candidate candidate)) ((candidate-confirmed? candidate (ZEDwrap6 #\Z #\E #\D #\0 #\9 #\9)) (replace-candidate candidate)) ((ZEDalways) candidate) (else ZEDerr))) (define (write-all! output-port program) (cond ((null? program) (close-output-port output-port)) ((ZEDalways) (begin (write-char (car program) output-port) (write-all! output-port (cdr program)))) (else ZEDerr))) (define (my-compile) (cond ((ZEDalways) (my-compile-a (must-get-file))) (else ZEDerr))) (define (my-compile-a source) (cond ((ZEDalways) (begin (my-compile-b (open-input-file source)) (my-compile-c (open-input-file source)))) (else ZEDerr))) (define (my-compile-b source-port) (cond ((ZEDalways) (my-compile1 source-port (open-input-file "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\PRELUDE.txt") "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\TEMP.TEMP" (begin (when-file-exists "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\TEMP.TEMP") (open-output-file "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\TEMP.TEMP")) (begin (when-file-exists "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\RACKET1.rkt") (open-output-file "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\RACKET1.rkt")) read-sentences)) (else ZEDerr))) (define (my-compile-c source-port) (cond ((ZEDalways) (my-compile1 source-port (open-input-file "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\PRELUDE.txt") "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\TEMP.TEMP" (begin (when-file-exists "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\TEMP.TEMP") (open-output-file "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\TEMP.TEMP")) (begin (when-file-exists "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\RACKET2.rkt") (open-output-file "C:\\Users\\Zelah\\Desktop\\ZEDWIN\\RACKET2.rkt")) debug-sentences)) (else ZEDerr))) (define (must-get-file) (cond ((ZEDalways) (must-get-file1 (get-file))) (else ZEDerr))) (define (must-get-file1 ZEDpath) (cond (ZEDpath ZEDpath) ((ZEDalways) (must-get-file)) (else ZEDerr))) (define (when-file-exists path) (cond ((file-exists? path) (delete-file path)) (else ZEDerr))) (define (not-return? ZEDcharacter) (cond ((ZEDalways) (not (ZED= #\return ZEDcharacter))) (else ZEDerr))) (define (my-compile1 ZED PRELUDE TEMP-path TEMP RACKET read/debug-sentences) (cond ((ZEDalways) (my-compile2 ZED PRELUDE TEMP-path TEMP RACKET (combine-program-clauses (by-three (read/debug-sentences (discard-comments (sentences (leading-newlines (space-newline (tab-replace (newline-space-tab-repeats (newline-space (filter not-return? (append (append (read-all! PRELUDE) (ZEDwrap2 #\newline #\newline)) (read-all! ZED))))))))))))))) (else ZEDerr))) (define (my-compile2 ZED PRELUDE TEMP-path TEMP RACKET combined) (cond ((ZEDalways) (my-compile3 ZED PRELUDE TEMP-path TEMP RACKET (programize combined (arity-hash combined)))) (else ZEDerr))) (define (my-compile3 ZED PRELUDE TEMP-path TEMP RACKET programized) (cond ((ZEDalways) (begin (display "#lang" TEMP) (begin (display #\space TEMP) (begin (display "racket/gui" TEMP) (begin (newline TEMP) (begin (display (primitives) TEMP) (begin (newline TEMP) (begin (display programized TEMP) (begin (close-output-port TEMP) (my-compile4 (open-input-file TEMP-path) RACKET)))))))))) (else ZEDerr))) (define (my-compile4 TEMP RACKET) (cond ((ZEDalways) (write-all! RACKET (strip (read-all! TEMP)))) (else ZEDerr))))

No comments:

Post a Comment