"Copyright (c) 2015, Mark Tarver\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n3. The name of Mark Tarver may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY Mark Tarver ''AS IS'' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL Mark Tarver BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." (begin (register-function-arity (quote declare) 2) (define (kl:declare V4007 V4008) (let ((Record (kl:set (quote shen.*signedfuncs*) (cons (cons V4007 V4008) (kl:value (quote shen.*signedfuncs*)))))) (let ((Variancy (guard (lambda (E) (quote shen.skip)) (lambda () (kl:shen.variancy-test V4007 V4008))))) (let ((Type (kl:shen.rcons_form (kl:shen.demodulate V4008)))) (let ((F* (kl:concat (quote shen.type-signature-of-) V4007))) (let ((Parameters (kl:shen.parameters 1))) (let ((Clause (cons (cons F* (cons (quote X) (quote ()))) (cons (quote :-) (cons (cons (cons (quote unify!) (cons (quote X) (cons Type (quote ())))) (quote ())) (quote ())))))) (let ((AUM_instruction (kl:shen.aum Clause Parameters))) (let ((Code (kl:shen.aum_to_shen AUM_instruction))) (let ((ShenDef (cons (quote define) (cons F* (kl:append Parameters (kl:append (cons (quote ProcessN) (cons (quote Continuation) (quote ()))) (cons (quote ->) (cons Code (quote ()))))))))) (let ((Eval (kl:shen.eval-without-macros ShenDef))) V4007))))))))))) (quote declare)) (begin (register-function-arity (quote shen.demodulate) 1) (define (kl:shen.demodulate V4010) (let ((Demod (kl:shen.walk (kl:value (quote shen.*demodulation-function*)) V4010))) (if (kl:= Demod V4010) V4010 (kl:shen.demodulate Demod)))) (quote shen.demodulate)) (begin (register-function-arity (quote shen.variancy-test) 2) (define (kl:shen.variancy-test V4013 V4014) (let ((TypeF (kl:shen.typecheck V4013 (quote B)))) (let ((Check (if (eq? (quote symbol) TypeF) (quote shen.skip) (if (assert-boolean (kl:shen.variant? TypeF V4014)) (quote shen.skip) (kl:shen.prhush (string-append "warning: changing the type of " (kl:shen.app V4013 " may create errors\n" (quote shen.a))) (kl:stoutput)))))) (quote shen.skip)))) (quote shen.variancy-test)) (begin (register-function-arity (quote shen.variant?) 2) (define (kl:shen.variant? V4027 V4028) (cond ((kl:= V4028 V4027) #t) ((and (pair? V4027) (and (pair? V4028) (kl:= (car V4028) (car V4027)))) (kl:shen.variant? (cdr V4027) (cdr V4028))) ((and (pair? V4027) (and (pair? V4028) (and (kl:shen.pvar? (car V4027)) (kl:variable? (car V4028))))) (kl:shen.variant? (kl:subst (quote shen.a) (car V4027) (cdr V4027)) (kl:subst (quote shen.a) (car V4028) (cdr V4028)))) ((and (pair? V4027) (and (pair? (car V4027)) (and (pair? V4028) (pair? (car V4028))))) (kl:shen.variant? (kl:append (car V4027) (cdr V4027)) (kl:append (car V4028) (cdr V4028)))) (#t #f))) (quote shen.variant?)) (kl:declare (quote absvector?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote adjoin) (cons (quote A) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote and) (cons (quote boolean) (cons (quote -->) (cons (cons (quote boolean) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ()))))) (kl:declare (quote shen.app) (cons (quote A) (cons (quote -->) (cons (cons (quote string) (cons (quote -->) (cons (cons (quote symbol) (cons (quote -->) (cons (quote string) (quote ())))) (quote ())))) (quote ()))))) (kl:declare (quote append) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote arity) (cons (quote A) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote assoc) (cons (quote A) (cons (quote -->) (cons (cons (cons (quote list) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote boolean?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote bound?) (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote cd) (cons (quote string) (cons (quote -->) (cons (quote string) (quote ()))))) (kl:declare (quote close) (cons (cons (quote stream) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote B) (quote ()))) (quote ()))))) (kl:declare (quote cn) (cons (quote string) (cons (quote -->) (cons (cons (quote string) (cons (quote -->) (cons (quote string) (quote ())))) (quote ()))))) (kl:declare (quote compile) (cons (cons (quote A) (cons (quote shen.==>) (cons (quote B) (quote ())))) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (cons (quote -->) (cons (quote B) (quote ())))) (quote ())))) (quote ()))))) (kl:declare (quote cons?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote destroy) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote difference) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote do) (cons (quote A) (cons (quote -->) (cons (cons (quote B) (cons (quote -->) (cons (quote B) (quote ())))) (quote ()))))) (kl:declare (quote ) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote shen.==>) (cons (cons (quote list) (cons (quote B) (quote ()))) (quote ()))))) (kl:declare (quote ) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote shen.==>) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ()))))) (kl:declare (quote element?) (cons (quote A) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ()))))) (kl:declare (quote empty?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote enable-type-theory) (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote external) (cons (quote symbol) (cons (quote -->) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (quote ()))))) (kl:declare (quote error-to-string) (cons (quote exception) (cons (quote -->) (cons (quote string) (quote ()))))) (kl:declare (quote explode) (cons (quote A) (cons (quote -->) (cons (cons (quote list) (cons (quote string) (quote ()))) (quote ()))))) (kl:declare (quote fail) (cons (quote -->) (cons (quote symbol) (quote ())))) (kl:declare (quote fail-if) (cons (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ())))) (cons (quote -->) (cons (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ())))) (quote ()))))) (kl:declare (quote fix) (cons (cons (quote A) (cons (quote -->) (cons (quote A) (quote ())))) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (quote A) (quote ())))) (quote ()))))) (kl:declare (quote freeze) (cons (quote A) (cons (quote -->) (cons (cons (quote lazy) (cons (quote A) (quote ()))) (quote ()))))) (kl:declare (quote fst) (cons (cons (quote A) (cons (quote *) (cons (quote B) (quote ())))) (cons (quote -->) (cons (quote A) (quote ()))))) (kl:declare (quote function) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (quote ()))))) (kl:declare (quote gensym) (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote <-vector) (cons (cons (quote vector) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote A) (quote ())))) (quote ()))))) (kl:declare (quote vector->) (cons (cons (quote vector) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (cons (quote vector) (cons (quote A) (quote ()))) (quote ())))) (quote ())))) (quote ()))))) (kl:declare (quote vector) (cons (quote number) (cons (quote -->) (cons (cons (quote vector) (cons (quote A) (quote ()))) (quote ()))))) (kl:declare (quote get-time) (cons (quote symbol) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote hash) (cons (quote A) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote number) (quote ())))) (quote ()))))) (kl:declare (quote head) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (quote A) (quote ()))))) (kl:declare (quote hdv) (cons (cons (quote vector) (cons (quote A) (quote ()))) (cons (quote -->) (cons (quote A) (quote ()))))) (kl:declare (quote hdstr) (cons (quote string) (cons (quote -->) (cons (quote string) (quote ()))))) (kl:declare (quote if) (cons (quote boolean) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (quote A) (quote ())))) (quote ())))) (quote ()))))) (kl:declare (quote it) (cons (quote -->) (cons (quote string) (quote ())))) (kl:declare (quote implementation) (cons (quote -->) (cons (quote string) (quote ())))) (kl:declare (quote include) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (quote ()))))) (kl:declare (quote include-all-but) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (quote ()))))) (kl:declare (quote inferences) (cons (quote -->) (cons (quote number) (quote ())))) (kl:declare (quote shen.insert) (cons (quote A) (cons (quote -->) (cons (cons (quote string) (cons (quote -->) (cons (quote string) (quote ())))) (quote ()))))) (kl:declare (quote integer?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote internal) (cons (quote symbol) (cons (quote -->) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (quote ()))))) (kl:declare (quote intersection) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote kill) (cons (quote -->) (cons (quote A) (quote ())))) (kl:declare (quote language) (cons (quote -->) (cons (quote string) (quote ())))) (kl:declare (quote length) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote limit) (cons (cons (quote vector) (cons (quote A) (quote ()))) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote load) (cons (quote string) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote map) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote B) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote mapcan) (cons (cons (quote A) (cons (quote -->) (cons (cons (quote list) (cons (quote B) (quote ()))) (quote ())))) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote B) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote maxinferences) (cons (quote number) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote n->string) (cons (quote number) (cons (quote -->) (cons (quote string) (quote ()))))) (kl:declare (quote nl) (cons (quote number) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote not) (cons (quote boolean) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote nth) (cons (quote number) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (quote A) (quote ())))) (quote ()))))) (kl:declare (quote number?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote occurrences) (cons (quote A) (cons (quote -->) (cons (cons (quote B) (cons (quote -->) (cons (quote number) (quote ())))) (quote ()))))) (kl:declare (quote occurs-check) (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote optimise) (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote or) (cons (quote boolean) (cons (quote -->) (cons (cons (quote boolean) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ()))))) (kl:declare (quote os) (cons (quote -->) (cons (quote string) (quote ())))) (kl:declare (quote package?) (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote port) (cons (quote -->) (cons (quote string) (quote ())))) (kl:declare (quote porters) (cons (quote -->) (cons (quote string) (quote ())))) (kl:declare (quote pos) (cons (quote string) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote string) (quote ())))) (quote ()))))) (kl:declare (quote pr) (cons (quote string) (cons (quote -->) (cons (cons (cons (quote stream) (cons (quote out) (quote ()))) (cons (quote -->) (cons (quote string) (quote ())))) (quote ()))))) (kl:declare (quote print) (cons (quote A) (cons (quote -->) (cons (quote A) (quote ()))))) (kl:declare (quote profile) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (quote ()))))) (kl:declare (quote preclude) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (quote ()))))) (kl:declare (quote shen.proc-nl) (cons (quote string) (cons (quote -->) (cons (quote string) (quote ()))))) (kl:declare (quote profile-results) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (cons (quote -->) (cons (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (cons (quote *) (cons (quote number) (quote ())))) (quote ()))))) (kl:declare (quote protect) (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote preclude-all-but) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote symbol) (quote ()))) (quote ()))))) (kl:declare (quote shen.prhush) (cons (quote string) (cons (quote -->) (cons (cons (cons (quote stream) (cons (quote out) (quote ()))) (cons (quote -->) (cons (quote string) (quote ())))) (quote ()))))) (kl:declare (quote ps) (cons (quote symbol) (cons (quote -->) (cons (cons (quote list) (cons (quote unit) (quote ()))) (quote ()))))) (kl:declare (quote read) (cons (cons (quote stream) (cons (quote in) (quote ()))) (cons (quote -->) (cons (quote unit) (quote ()))))) (kl:declare (quote read-byte) (cons (cons (quote stream) (cons (quote in) (quote ()))) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote read-file-as-bytelist) (cons (quote string) (cons (quote -->) (cons (cons (quote list) (cons (quote number) (quote ()))) (quote ()))))) (kl:declare (quote read-file-as-string) (cons (quote string) (cons (quote -->) (cons (quote string) (quote ()))))) (kl:declare (quote read-file) (cons (quote string) (cons (quote -->) (cons (cons (quote list) (cons (quote unit) (quote ()))) (quote ()))))) (kl:declare (quote read-from-string) (cons (quote string) (cons (quote -->) (cons (cons (quote list) (cons (quote unit) (quote ()))) (quote ()))))) (kl:declare (quote release) (cons (quote -->) (cons (quote string) (quote ())))) (kl:declare (quote remove) (cons (quote A) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote reverse) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ()))))) (kl:declare (quote simple-error) (cons (quote string) (cons (quote -->) (cons (quote A) (quote ()))))) (kl:declare (quote snd) (cons (cons (quote A) (cons (quote *) (cons (quote B) (quote ())))) (cons (quote -->) (cons (quote B) (quote ()))))) (kl:declare (quote specialise) (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote spy) (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote step) (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote stinput) (cons (quote -->) (cons (cons (quote stream) (cons (quote in) (quote ()))) (quote ())))) (kl:declare (quote sterror) (cons (quote -->) (cons (cons (quote stream) (cons (quote out) (quote ()))) (quote ())))) (kl:declare (quote stoutput) (cons (quote -->) (cons (cons (quote stream) (cons (quote out) (quote ()))) (quote ())))) (kl:declare (quote string?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote str) (cons (quote A) (cons (quote -->) (cons (quote string) (quote ()))))) (kl:declare (quote string->n) (cons (quote string) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote string->symbol) (cons (quote string) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote sum) (cons (cons (quote list) (cons (quote number) (quote ()))) (cons (quote -->) (cons (quote number) (quote ()))))) (kl:declare (quote symbol?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote systemf) (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote tail) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ()))))) (kl:declare (quote tlstr) (cons (quote string) (cons (quote -->) (cons (quote string) (quote ()))))) (kl:declare (quote tlv) (cons (cons (quote vector) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote vector) (cons (quote A) (quote ()))) (quote ()))))) (kl:declare (quote tc) (cons (quote symbol) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote tc?) (cons (quote -->) (cons (quote boolean) (quote ())))) (kl:declare (quote thaw) (cons (cons (quote lazy) (cons (quote A) (quote ()))) (cons (quote -->) (cons (quote A) (quote ()))))) (kl:declare (quote track) (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote trap-error) (cons (quote A) (cons (quote -->) (cons (cons (cons (quote exception) (cons (quote -->) (cons (quote A) (quote ())))) (cons (quote -->) (cons (quote A) (quote ())))) (quote ()))))) (kl:declare (quote tuple?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote undefmacro) (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote union) (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (cons (quote list) (cons (quote A) (quote ()))) (cons (quote -->) (cons (cons (quote list) (cons (quote A) (quote ()))) (quote ())))) (quote ()))))) (kl:declare (quote unprofile) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (quote B) (quote ())))) (quote ()))))) (kl:declare (quote untrack) (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote unspecialise) (cons (quote symbol) (cons (quote -->) (cons (quote symbol) (quote ()))))) (kl:declare (quote variable?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote vector?) (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote version) (cons (quote -->) (cons (quote string) (quote ())))) (kl:declare (quote write-to-file) (cons (quote string) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (quote A) (quote ())))) (quote ()))))) (kl:declare (quote write-byte) (cons (quote number) (cons (quote -->) (cons (cons (cons (quote stream) (cons (quote out) (quote ()))) (cons (quote -->) (cons (quote number) (quote ())))) (quote ()))))) (kl:declare (quote y-or-n?) (cons (quote string) (cons (quote -->) (cons (quote boolean) (quote ()))))) (kl:declare (quote >) (cons (quote number) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ()))))) (kl:declare (quote <) (cons (quote number) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ()))))) (kl:declare (quote >=) (cons (quote number) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ()))))) (kl:declare (quote <=) (cons (quote number) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ()))))) (kl:declare (quote =) (cons (quote A) (cons (quote -->) (cons (cons (quote A) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ()))))) (kl:declare (quote +) (cons (quote number) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote number) (quote ())))) (quote ()))))) (kl:declare (quote /) (cons (quote number) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote number) (quote ())))) (quote ()))))) (kl:declare (quote -) (cons (quote number) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote number) (quote ())))) (quote ()))))) (kl:declare (quote *) (cons (quote number) (cons (quote -->) (cons (cons (quote number) (cons (quote -->) (cons (quote number) (quote ())))) (quote ()))))) (kl:declare (quote ==) (cons (quote A) (cons (quote -->) (cons (cons (quote B) (cons (quote -->) (cons (quote boolean) (quote ())))) (quote ())))))