'import env protocol for repl; minor cleanup

This commit is contained in:
ESL 2024-07-08 18:13:28 -04:00
parent 09f36ab213
commit a03e3f2d99
2 changed files with 378 additions and 349 deletions

335
src/t.scm
View file

@ -9,40 +9,34 @@
; Utils ; Utils
;--------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------
(define set-member? (define (set-member? x s)
(lambda (x s) (cond [(null? s) #f]
(cond [(eq? x (car s)) #t]
[(null? s) #f] [else (set-member? x (cdr s))]))
[(eq? x (car s)) #t]
[else (set-member? x (cdr s))])))
(define set-cons (define (set-cons x s)
(lambda (x s) (if (set-member? x s)
(if (set-member? x s) s
s (cons x s)))
(cons x s))))
(define set-union (define (set-union s1 s2)
(lambda (s1 s2) (if (null? s1)
(if (null? s1) s2
s2 (set-union (cdr s1) (set-cons (car s1) s2))))
(set-union (cdr s1) (set-cons (car s1) s2)))))
(define set-minus (define (set-minus s1 s2)
(lambda (s1 s2) (if (null? s1)
(if (null? s1) '()
'() (if (set-member? (car s1) s2)
(if (set-member? (car s1) s2) (set-minus (cdr s1) s2)
(set-minus (cdr s1) s2) (cons (car s1) (set-minus (cdr s1) s2)))))
(cons (car s1) (set-minus (cdr s1) s2))))))
(define set-intersect (define (set-intersect s1 s2)
(lambda (s1 s2) (if (null? s1)
(if (null? s1) '()
'() (if (set-member? (car s1) s2)
(if (set-member? (car s1) s2) (cons (car s1) (set-intersect (cdr s1) s2))
(cons (car s1) (set-intersect (cdr s1) s2)) (set-intersect (cdr s1) s2))))
(set-intersect (cdr s1) s2)))))
(define-syntax record-case (define-syntax record-case
(syntax-rules (else) (syntax-rules (else)
@ -66,7 +60,10 @@
(or (eq? pat '*) (or (eq? pat '*)
(and (eq? pat '<id>) (or (symbol? x) (procedure? x))) (and (eq? pat '<id>) (or (symbol? x) (procedure? x)))
(and (eq? pat '<symbol>) (symbol? x)) (and (eq? pat '<symbol>) (symbol? x))
(and (eq? pat '<number>) (number? x))
(and (eq? pat '<string>) (string? x)) (and (eq? pat '<string>) (string? x))
(and (eq? pat '<vector>) (vector? x))
(and (eq? pat '<box>) (box? x))
(eqv? x pat) (eqv? x pat)
(and (pair? pat) (and (pair? pat)
(cond [(and (eq? (car pat) '...) (cond [(and (eq? (car pat) '...)
@ -108,8 +105,8 @@
(begin result1 result2 ...) (begin result1 result2 ...)
(sexp-case key clause clauses ...))])) (sexp-case key clause clauses ...))]))
(define symbol-append (define (symbol-append . syms)
(lambda syms (string->symbol (apply string-append (map symbol->string syms))))) (string->symbol (apply string-append (map symbol->string syms))))
; unique symbol generator (poor man's version) ; unique symbol generator (poor man's version)
(define gensym (define gensym
@ -123,29 +120,32 @@
(string-append (symbol->string (car args)) (string-append (symbol->string (car args))
(string-append "#" (fixnum->string gsc 10)))))))) (string-append "#" (fixnum->string gsc 10))))))))
(define posq (define (posq x l)
(lambda (x l) (let loop ([l l] [n 0])
(let loop ([l l] [n 0]) (cond [(null? l) #f]
(cond [(null? l) #f] [(eq? x (car l)) n]
[(eq? x (car l)) n] [else (loop (cdr l) (fx+ n 1))])))
[else (loop (cdr l) (fx+ n 1))]))))
(define rassq (define (rassq x al)
(lambda (x al) (and (pair? al)
(and (pair? al) (let ([a (car al)])
(let ([a (car al)]) (if (eq? x (cdr a)) a (rassq x (cdr al))))))
(if (eq? x (cdr a)) a (rassq x (cdr al)))))))
(define list-diff (define (remove! x l pred?) ; applies (pred? (car l) x)
(lambda (l t) (let loop ([f #f] [l #f] [r l])
(if (or (null? l) (eq? l t)) (cond [(not (pair? r)) (if l (begin (set-cdr! l r) f) r)]
'() [(pred? (car r) x) (loop f l (cdr r))]
(cons (car l) (list-diff (cdr l) t))))) [l (set-cdr! l r) (loop f r (cdr r))]
[else (loop r r (cdr r))])))
(define (list-diff l t)
(if (or (null? l) (eq? l t))
'()
(cons (car l) (list-diff (cdr l) t))))
(define (pair* x . more) (define (pair* x . more)
(let loop ([x x] [rest more]) (let loop ([x x] [r more])
(if (null? rest) x (if (null? r) x (cons x (loop (car r) (cdr r))))))
(cons x (loop (car rest) (cdr rest))))))
(define (append* lst) (define (append* lst)
(cond [(null? lst) '()] (cond [(null? lst) '()]
@ -565,7 +565,7 @@
(loop env (cons #f ids) (cons init inits) (cons #f nids) rest)) (loop env (cons #f ids) (cons init inits) (cons #f nids) rest))
(let ([id (id-rename-as head (caar eal))] [loc (cdar eal)]) (let ([id (id-rename-as head (caar eal))] [loc (cdar eal)])
(scan (cdr eal) ; use handmade env sharing loc, but for ref only! (scan (cdr eal) ; use handmade env sharing loc, but for ref only!
(lambda (i at) (if (and (eq? i id) (eq? at 'ref)) loc (env i at)))))))) (lambda (i at) (if (eq? i id) (and (eq? at 'ref) loc) (env i at))))))))
(x-error "improper import form" first))] (x-error "improper import form" first))]
[else [else
(if (val-transformer? hval) (if (val-transformer? hval)
@ -1050,8 +1050,8 @@
(cond [(not loc) (x-error "cannot export id" lid)] (cond [(not loc) (x-error "cannot export id" lid)]
[(location-special? loc) (loop (cdr esps) (cons (cons eid loc) eal))] [(location-special? loc) (loop (cdr esps) (cons (cons eid loc) eal))]
[else (let ([val (location-val loc)]) [else (let ([val (location-val loc)])
(if (memq (car val) '(ref const)) (if (or (not (val-core? val)) (memq (car val) '(ref const)))
(loop (cdr esps) (cons (cons eid (make-location (list 'const (cadr val)))) eal)) (loop (cdr esps) (cons (cons eid loc) eal))
(x-error "cannot export code alias id" lid val)))])))))))) (x-error "cannot export code alias id" lid val)))]))))))))
; Note: define-library semantics does not depend on lexical context, and, as a syntax definition, ; Note: define-library semantics does not depend on lexical context, and, as a syntax definition,
@ -1171,107 +1171,61 @@
(define (c-warning msg . args) (define (c-warning msg . args)
(warning* (string-append "compiler: " msg) args)) (warning* (string-append "compiler: " msg) args))
(define find-free* (define (find-free* x* b)
(lambda (x* b) (if (null? x*)
(if (null? x*) '()
'() (set-union
(set-union (find-free (car x*) b)
(find-free (car x*) b) (find-free* (cdr x*) b))))
(find-free* (cdr x*) b)))))
(define find-free (define (find-free x b)
(lambda (x b) (record-case x
(record-case x [quote (obj) '()]
[quote (obj) [gref (gid) '()]
'()] [gset! (gid exp) (find-free exp b)]
[gref (gid) [(ref const) (id) (if (set-member? id b) '() (list id))]
'()] [set! (id exp) (set-union (if (set-member? id b) '() (list id)) (find-free exp b))]
[gset! (gid exp) [set& (id) (if (set-member? id b) '() (list id))]
(find-free exp b)] [lambda (idsi exp) (find-free exp (set-union (flatten-idslist idsi) b))]
[(ref const) (id) [lambda* clauses (find-free* (map cadr clauses) b)]
(if (set-member? id b) '() (list id))] [letcc (kid exp) (find-free exp (set-union (list kid) b))]
[set! (id exp) [withcc (kexp exp) (set-union (find-free kexp b) (find-free exp b))]
(set-union [if (ce te ee) (set-union (find-free ce b) (set-union (find-free te b) (find-free ee b)))]
(if (set-member? id b) '() (list id)) [begin exps (find-free* exps b)]
(find-free exp b))] [integrable (i . as) (find-free* as b)]
[set& (id) [call (exp . args) (set-union (find-free exp b) (find-free* args b))]
(if (set-member? id b) '() (list id))] [asm (cstr) '()]
[lambda (idsi exp) [once (gid exp) (find-free exp b)]
(find-free exp (set-union (flatten-idslist idsi) b))] [(define define-syntax define-library import) tail (c-error "misplaced definition form" x)]
[lambda* clauses [else (c-error "unexpected <core> form" x)]))
(find-free* (map cadr clauses) b)]
[letcc (kid exp)
(find-free exp (set-union (list kid) b))]
[withcc (kexp exp)
(set-union (find-free kexp b) (find-free exp b))]
[if (test then else)
(set-union
(find-free test b)
(set-union (find-free then b) (find-free else b)))]
[begin exps
(find-free* exps b)]
[integrable (ig . args)
(find-free* args b)]
[call (exp . args)
(set-union (find-free exp b) (find-free* args b))]
[asm (cstr)
'()]
[once (gid exp)
(find-free exp b)]
[(define define-syntax define-library import) tail
(c-error "misplaced definition form" x)]
[else (c-error "unexpected <core> form" x)])))
(define find-sets* (define (find-sets* x* v)
(lambda (x* v) (if (null? x*)
(if (null? x*) '()
'() (set-union
(set-union (find-sets (car x*) v)
(find-sets (car x*) v) (find-sets* (cdr x*) v))))
(find-sets* (cdr x*) v)))))
(define find-sets (define (find-sets x v)
(lambda (x v) (record-case x
(record-case x [quote (obj) '()]
[quote (obj) [gref (gid) '()]
'()] [gset! (gid exp) (find-sets exp v)]
[gref (gid) [(ref const) (id) '()]
'()] [set! (id exp) (set-union (if (set-member? id v) (list id) '()) (find-sets exp v))]
[gset! (gid exp) [set& (id) (if (set-member? id v) (list id) '())]
(find-sets exp v)] [lambda (idsi exp) (find-sets exp (set-minus v (flatten-idslist idsi)))]
[(ref const) (id) [lambda* clauses (find-sets* (map cadr clauses) v)]
'()] [letcc (kid exp) (find-sets exp (set-minus v (list kid)))]
[set! (id exp) [withcc (kexp exp) (set-union (find-sets kexp v) (find-sets exp v))]
(set-union [begin exps (find-sets* exps v)]
(if (set-member? id v) (list id) '()) [if (ce te ee) (set-union (find-sets ce v) (set-union (find-sets te v) (find-sets ee v)))]
(find-sets exp v))] [integrable (i . as) (find-sets* as v)]
[set& (id) [call (exp . args) (set-union (find-sets exp v) (find-sets* args v))]
(if (set-member? id v) (list id) '())] [asm (cstr) '()]
[lambda (idsi exp) [once (gid exp) (find-sets exp v)]
(find-sets exp (set-minus v (flatten-idslist idsi)))] [(define define-syntax define-library import) tail (c-error "misplaced definition form" x)]
[lambda* clauses [else (c-error "unexpected <core> form" x)]))
(find-sets* (map cadr clauses) v)]
[letcc (kid exp)
(find-sets exp (set-minus v (list kid)))]
[withcc (kexp exp)
(set-union (find-sets kexp v) (find-sets exp v))]
[begin exps
(find-sets* exps v)]
[if (test then else)
(set-union
(find-sets test v)
(set-union (find-sets then v) (find-sets else v)))]
[integrable (ig . args)
(find-sets* args v)]
[call (exp . args)
(set-union (find-sets exp v) (find-sets* args v))]
[asm (cstr)
'()]
[once (gid exp)
(find-sets exp v)]
[(define define-syntax define-library import) tail
(c-error "misplaced definition form" x)]
[else (c-error "unexpected <core> form" x)])))
(define codegen (define codegen
; x: <core> expression to compile ; x: <core> expression to compile
@ -1348,19 +1302,19 @@
(codegen (car xl) l f s g k port) (codegen (car xl) l f s g k port)
(loop (cdr xl))))) (loop (cdr xl)))))
(when (and k (null? exps)) (write-char #\] port) (write-serialized-arg k port))] (when (and k (null? exps)) (write-char #\] port) (write-serialized-arg k port))]
[if (test then else) [if (cexp texp eexp)
(codegen test l f s g #f port) (codegen cexp l f s g #f port)
(write-char #\? port) (write-char #\? port)
(write-char #\{ port) (write-char #\{ port)
(codegen then l f s g k port) (codegen texp l f s g k port)
(write-char #\} port) (write-char #\} port)
(cond [k ; tail call: 'then' arm exits, so br around is not needed (cond [k ; tail call: 'then' arm exits, so br around is not needed
(codegen else l f s g k port)] (codegen eexp l f s g k port)]
[(equal? else '(begin)) ; non-tail with void 'else' arm [(equal? eexp '(begin)) ; non-tail with void 'else' arm
] ; no code needed -- ac retains #f from failed test ] ; no code needed -- ac retains #f from failed test
[else ; non-tail with 'else' expression; needs br [else ; non-tail with 'else' expression; needs br
(write-char #\{ port) (write-char #\{ port)
(codegen else l f s g k port) (codegen eexp l f s g k port)
(write-char #\} port)])] (write-char #\} port)])]
[lambda (idsi exp) [lambda (idsi exp)
(let* ([ids (flatten-idslist idsi)] (let* ([ids (flatten-idslist idsi)]
@ -1765,6 +1719,17 @@
loc)]))] loc)]))]
[else #f]))) [else #f])))
(define (name-install! nr name loc) ;=> same|modified|added
(let* ([n-1 (- (vector-length nr) 1)] [i (if (pair? name) n-1 (immediate-hash name n-1))]
[al (vector-ref nr i)] [p (if (pair? name) (assoc name al) (assq name al))])
(cond [(and p (eq? (cdr p) loc)) 'same] ; nothing changed
[p (set-cdr! p loc) 'modified]
[else (vector-set! nr i (cons (cons name loc) al)) 'added])))
(define (name-remove! nr name)
(let* ([n-1 (- (vector-length nr) 1)] [i (if (pair? name) n-1 (immediate-hash name n-1))])
(vector-set! nr i (remove! name (vector-ref nr i) (lambda (p name) (equal? (car p) name))))))
; public registry for all non-hidden skint names ; public registry for all non-hidden skint names
(define *root-name-registry* (make-name-registry 300)) (define *root-name-registry* (make-name-registry 300))
@ -1894,7 +1859,7 @@
(box?) (box) (unbox) (set-box!) (record?) (make-record) (record-length) (record-ref) (box?) (box) (unbox) (set-box!) (record?) (make-record) (record-length) (record-ref)
(record-set!) (fixnum?) (fxpositive?) (fxnegative?) (fxeven?) (fxodd?) (fx+) (fx*) (fx-) (fx/) (record-set!) (fixnum?) (fxpositive?) (fxnegative?) (fxeven?) (fxodd?) (fx+) (fx*) (fx-) (fx/)
(fxquotient) (fxremainder) (fxmodquo) (fxmodulo) (fxeucquo) (fxeucrem) (fxneg) (fxquotient) (fxremainder) (fxmodquo) (fxmodulo) (fxeucquo) (fxeucrem) (fxneg)
(fxabs) (fx<?) (fx<=?) (fx>?) (fx>=?) (fx=?) (fx!=? x y) (fxmin) (fxmax) (fxneg) (fxabs) (fxgcd) (fxabs) (fx<?) (fx<=?) (fx>?) (fx>=?) (fx=?) (fx!=?) (fxmin) (fxmax) (fxneg) (fxabs) (fxgcd)
(fxexpt) (fxsqrt) (fxnot) (fxand) (fxior) (fxxor) (fxsll) (fxsrl) (fixnum->flonum) (fixnum->string) (fxexpt) (fxsqrt) (fxnot) (fxand) (fxior) (fxxor) (fxsll) (fxsrl) (fixnum->flonum) (fixnum->string)
(string->fixnum) (flonum?) (flzero?) (flpositive?) (flnegative?) (flinteger?) (flnan?) (string->fixnum) (flonum?) (flzero?) (flpositive?) (flnegative?) (flinteger?) (flnan?)
(flinfinite?) (flfinite?) (fleven?) (flodd?) (fl+) (fl*) (fl-) (fl/) (flneg) (flabs) (flgcd) (flinfinite?) (flfinite?) (fleven?) (flodd?) (fl+) (fl*) (fl-) (fl/) (flneg) (flabs) (flgcd)
@ -1954,8 +1919,8 @@
[else #f]))) [else #f])))
; mutable environment from two registries; new bindings go to user registry ; mutable environment from two registries; new bindings go to user registry
(define (make-repl-environment rr ur prefix) ; prefix for allocated globals (define (make-repl-environment rr ur gpref) ; prefix for allocated globals
(define (global name) (fully-qualified-library-prefixed-name prefix name)) (define (global name) (fully-qualified-library-prefixed-name gpref name))
(lambda (name at) (lambda (name at)
(cond [(new-id? name) ; nonsymbolic ids can't be (re)bound here (cond [(new-id? name) ; nonsymbolic ids can't be (re)bound here
(case at [(ref set!) (old-den name)] [else #f])] (case at [(ref set!) (old-den name)] [else #f])]
@ -1982,6 +1947,17 @@
(name-lookup ur name ; return if in user registry (name-lookup ur name ; return if in user registry
(lambda (n) ; ok, not in ur: alloc (lambda (n) ; ok, not in ur: alloc
(void)))] (void)))]
[(and (eq? at 'import) (sexp-match? '((<symbol> . #&*) ...) name))
; special request for repl environment only: mass import
(let loop ([eal name] [samc 0] [modc 0] [addc 0])
(if (null? eal)
(list samc modc addc)
(let ([id (caar eal)] [loc (cdar eal)] [eal (cdr eal)])
(name-remove! ur id) ; user binding isn't changed, but no longer visible
(case (name-install! rr id loc) ; root binding possibly changed
[(same) (loop eal (+ samc 1) modc addc)]
[(modified) (loop eal samc (+ modc 1) addc)]
[(added) (loop eal samc modc (+ addc 1))]))))]
[else #f]))) [else #f])))
(define root-environment (define root-environment
@ -2048,11 +2024,22 @@
[(eq? hval 'import) ; splice as definitions [(eq? hval 'import) ; splice as definitions
(let* ([core (xform-import (car x) (cdr x) env #t)] ; core is (import <library>) (let* ([core (xform-import (car x) (cdr x) env #t)] ; core is (import <library>)
[l (cadr core)] [code (library-code l)] [eal (library-exports l)]) [l (cadr core)] [code (library-code l)] [eal (library-exports l)])
(define (define-alias p) ; note: we should somehow introduce imported locations as-is for keywords like
(repl-eval-top-form ; FIXME: this is not optimal -- too much fuss ; 'else' to work correctly -- while protecting imported locations from change
(list define-syntax-id (car p) (list syntax-quote-id (location-val (cdr p)))) env)) ; via define or define-syntax; lookup with at=define-syntax returns us new
(repl-compile-and-run-core-expr code) ; location from user name registry, offering different locations and no protection!
(for-each define-alias eal))] ; we need to extend env protocol, e.g. (env id <location>) that either fails,
; or inserts <location> under id where it will be returned via (env id 'ref)
; and nothing else. We use (env eal 'import) -- with guarantees that env can't
; answer any requests but 'ref to imported bindings
(let ([counts (env eal 'import)]) ; manually invoke env's extended behavior
(if (sexp-match? '(<number> <number> <number>) counts)
(when *verbose* (display "IMPORT: ")
(write (car counts)) (display " bindings are the same, ")
(write (cadr counts)) (display " modified, ")
(write (caddr counts)) (display " added\n"))
(x-error "failed to import to env, import is not supported:" env eal)))
(repl-compile-and-run-core-expr code))]
[(val-transformer? hval) ; apply transformer and loop [(val-transformer? hval) ; apply transformer and loop
(repl-eval-top-form (hval x env) env)] (repl-eval-top-form (hval x env) env)]
[(val-integrable? hval) ; integrable application [(val-integrable? hval) ; integrable application
@ -2078,9 +2065,15 @@
[(ref <symbol>) (write (repl-environment (car args) 'ref) op) (newline op)] [(ref <symbol>) (write (repl-environment (car args) 'ref) op) (newline op)]
[(ref (* * ...)) (write (repl-environment (car args) 'ref) op) (newline op)] [(ref (* * ...)) (write (repl-environment (car args) 'ref) op) (newline op)]
[(rnr) (write *root-name-registry* op) (newline op)] [(rnr) (write *root-name-registry* op) (newline op)]
[(rnr *) (write (name-lookup *root-name-registry* (car args) #f) op) (newline op)] [(rref *) (write (name-lookup *root-name-registry* (car args) #f) op) (newline op)]
[(rrem! *) (cond [(name-lookup *root-name-registry* (car args) #f)
(name-remove! *root-name-registry* (car args)) (display "done!\n" op)]
[else (display "name not found: " op) (write name op) (newline op)])]
[(unr) (write *user-name-registry* op) (newline op)] [(unr) (write *user-name-registry* op) (newline op)]
[(unr *) (write (name-lookup *user-name-registry* (car args) #f) op) (newline op)] [(uref *) (write (name-lookup *user-name-registry* (car args) #f) op) (newline op)]
[(urem! *) (cond [(name-lookup *user-name-registry* (car args) #f)
(name-remove! *user-name-registry* (car args)) (display "done!\n" op)]
[else (display "name not found: " op) (write name op) (newline op)])]
[(peek *) [(peek *)
(cond [(string? (car args)) (cond [(string? (car args))
(display (if (file-exists? (car args)) (display (if (file-exists? (car args))
@ -2099,9 +2092,11 @@
(display " ,verbose off -- turn verbosity off\n" op) (display " ,verbose off -- turn verbosity off\n" op)
(display " ,ref <name> -- show current denotation for <name>\n" op) (display " ,ref <name> -- show current denotation for <name>\n" op)
(display " ,rnr -- show root name registry\n" op) (display " ,rnr -- show root name registry\n" op)
(display " ,rnr <name> -- lookup name in root registry\n" op) (display " ,rref <name> -- lookup name in root registry\n" op)
(display " ,rrem! <name> -- remove name from root registry\n" op)
(display " ,unr -- show user name registry\n" op) (display " ,unr -- show user name registry\n" op)
(display " ,unr <name> -- lookup name in user registry\n" op) (display " ,uref <name> -- lookup name in user registry\n" op)
(display " ,urem! <name> -- remove name from user registry\n" op)
(display " ,help -- this help\n" op)] (display " ,help -- this help\n" op)]
[else [else
(display "syntax error in repl command\n" op) (display "syntax error in repl command\n" op)

392
t.c
View file

@ -35,14 +35,17 @@ char *t_code[] = {
"P", "sexp-match?", "P", "sexp-match?",
"%2'(y1:*),.1q,.0?{.0]3}'(y4:<id>),.2q?{.2Y0,.0?{.0}{.3K0}_1}{f},.0?{.0" "%2'(y1:*),.1q,.0?{.0]3}'(y4:<id>),.2q?{.2Y0,.0?{.0}{.3K0}_1}{f},.0?{.0"
"]4}'(y8:<symbol>),.3q?{.3Y0}{f},.0?{.0]5}'(y8:<string>),.4q?{.4S0}{f}," "]4}'(y8:<symbol>),.3q?{.3Y0}{f},.0?{.0]5}'(y8:<number>),.4q?{.4N0}{f},"
".0?{.0]6}.4,.6v,.0?{.0]7}.5p?{'(y3:...),.6aq?{.5dp?{.5ddu}{f}}{f}?{.5d" ".0?{.0]6}'(y8:<string>),.5q?{.5S0}{f},.0?{.0]7}'(y8:<vector>),.6q?{.6V"
"a,.7v}{.5dp?{'(y3:...),.6daq?{.5ddu}{f}}{f}?{.5a,'(y1:*),.1q?{.7L0}{${" "0}{f},.0?{.0]8}'(y5:<box>),.7q?{.7Y2}{f},.0?{.0]9}.7,.9v,.0?{.0](i10)}"
".9,,#0.0,.5,&2{%1.0u,.0?{.0]2}.1p?{${.3a,:0,@(y11:sexp-match?)[02}?{.1" ".8p?{'(y3:...),.9aq?{.8dp?{.8ddu}{f}}{f}?{.8da,.(i10)v}{.8dp?{'(y3:..."
"d,:1^[21}f]2}f]2}.!0.0^_1[01}}_1}{.6p?{${.8a,.8a,@(y11:sexp-match?)[02" "),.9daq?{.8ddu}{f}}{f}?{.8a,'(y1:*),.1q?{.(i10)L0}{${.(i12),,#0.0,.5,&"
"}?{${.8d,.8d,@(y11:sexp-match?)[02}}{f}}{f}}}}{f},.0?{.0]8}.6V0?{.7V0?" "2{%1.0u,.0?{.0]2}.1p?{${.3a,:0,@(y11:sexp-match?)[02}?{.1d,:1^[21}f]2}"
"{${.9X0,.9X0,@(y11:sexp-match?)[02}}{f}}{f},.0?{.0]9}.7Y2?{.8Y2?{.8z,." "f]2}.!0.0^_1[01}}_1}{.9p?{${.(i11)a,.(i11)a,@(y11:sexp-match?)[02}?{${"
"8z,@(y11:sexp-match?)[92}f]9}f]9", ".(i11)d,.(i11)d,@(y11:sexp-match?)[02}}{f}}{f}}}}{f},.0?{.0](i11)}.9V0"
"?{.(i10)V0?{${.(i12)X0,.(i12)X0,@(y11:sexp-match?)[02}}{f}}{f},.0?{.0]"
"(i12)}.(i10)Y2?{.(i11)Y2?{.(i11)z,.(i11)z,@(y11:sexp-match?)[(i12)2}f]"
"(i12)}f](i12)",
"S", "sexp-case", "S", "sexp-case",
"l6:y12:syntax-rules;l1:y4:else;;l2:l4:y1:_;l2:y3:key;y3:...;;y7:clause" "l6:y12:syntax-rules;l1:y4:else;;l2:l4:y1:_;l2:y3:key;y3:...;;y7:clause"
@ -71,6 +74,11 @@ char *t_code[] = {
"P", "rassq", "P", "rassq",
"%2.1p?{.1a,.0d,.2q?{.0]3}.2d,.2,@(y5:rassq)[32}f]2", "%2.1p?{.1a,.0d,.2q?{.0]3}.2d,.2,@(y5:rassq)[32}f]2",
"P", "remove!",
"%3.1,f,f,,#0.0,.7,.6,&3{%3.2p~?{.1?{.2,.2sd.0]3}.2]3}${:0,.5a,:1[02}?{"
".2d,.2,.2,:2^[33}.1?{.2,.2sd.2d,.3,.2,:2^[33}.2d,.3,.4,:2^[33}.!0.0^_1"
"[33",
"P", "list-diff", "P", "list-diff",
"%2.0u,.0?{.0}{.2,.2q}_1?{n]2}${.3,.3d,@(y9:list-diff)[02},.1ac]2", "%2.0u,.0?{.0}{.2,.2q}_1?{n]2}${.3,.3d,@(y9:list-diff)[02},.1ac]2",
@ -358,7 +366,7 @@ char *t_code[] = {
",.0da,'0,.1V4,'1,.2V4,.(i10),.1,,#0.(i10),.1,.(i14),.(i19),.(i19),.(i1" ",.0da,'0,.1V4,'1,.2V4,.(i10),.1,,#0.(i10),.1,.(i14),.(i19),.(i19),.(i1"
"9),:0,.(i11),&8{%2.0u?{:0,@(y15:syntax-quote-id),l2,:5,:4,fc,:3,.3c,:2" "9),:0,.(i11),&8{%2.0u?{:0,@(y15:syntax-quote-id),l2,:5,:4,fc,:3,.3c,:2"
",fc,.6,:1^[35}.0ad,${.3aa,:7,@(y12:id-rename-as)[02},.3,.2,.2,&3{%2:0," ",fc,.6,:1^[35}.0ad,${.3aa,:7,@(y12:id-rename-as)[02},.3,.2,.2,&3{%2:0,"
".1q?{'(y3:ref),.2q}{f}?{:1]2}.1,.1,:2[22},.3d,:6^[42}.!0.0^_1[(i15)2}." ".1q?{'(y3:ref),.2q?{:1]2}f]2}.1,.1,:2[22},.3d,:6^[42}.!0.0^_1[(i15)2}."
"4,'(s20:improper import form),@(y7:x-error)[(i11)2}.1K0?{.5,${.9,.8,.6" "4,'(s20:improper import form),@(y7:x-error)[(i11)2}.1K0?{.5,${.9,.8,.6"
"[02}c,.(i10),.(i10),.(i10),.(i10),:0^[(i11)5}:1,.7,.(i12),.(i12)A8,.(i" "[02}c,.(i10),.(i10),.(i10),.(i10),:0^[(i11)5}:1,.7,.(i12),.(i12)A8,.(i"
"12)A8,.(i12)A8,@(y12:xform-labels)[(i11)6}:1,.1,.6,.6A8,.6A8,.6A8,@(y1" "12)A8,.(i12)A8,@(y12:xform-labels)[(i11)6}:1,.1,.6,.6A8,.6A8,.6A8,@(y1"
@ -609,9 +617,9 @@ char *t_code[] = {
",'(y5:begin)c,${.(i13)?{.2,.(i14),'(y4:once),l3}{.2},.(i11),@(y11:adjo" ",'(y5:begin)c,${.(i13)?{.2,.(i14),'(y4:once),l3}{.2},.(i11),@(y11:adjo"
"in-code)[02},.4,.8,,#0.8,.1,.5,&3{%2.0u?{.1A9,:0c]2}.0aa,.1ad,${'(y3:r" "in-code)[02},.4,.8,,#0.8,.1,.5,&3{%2.0u?{.1A9,:0c]2}.0aa,.1ad,${'(y3:r"
"ef),.4,:2[02},.0~?{.2,'(s16:cannot export id),@(y7:x-error)[52}${.2,@(" "ef),.4,:2[02},.0~?{.2,'(s16:cannot export id),@(y7:x-error)[52}${.2,@("
"y17:location-special?)[01}?{.4,.1,.3cc,.4d,:1^[52}.0z,'(l2:y3:ref;y5:c" "y17:location-special?)[01}?{.4,.1,.3cc,.4d,:1^[52}.0z,.0p~,.0?{.0}{'(l"
"onst;),.1aA0?{.5,.1da,'(y5:const),l2b,.4cc,.5d,:1^[62}.0,.4,'(s27:cann" "2:y3:ref;y5:const;),.2aA0}_1?{.5,.2,.4cc,.5d,:1^[62}.0,.4,'(s27:cannot"
"ot export code alias id),@(y7:x-error)[63}.!0.0^_1[(i16)2", " export code alias id),@(y7:x-error)[63}.!0.0^_1[(i16)2",
"P", "xform-define-library", "P", "xform-define-library",
"%4${.3,@(y7:list2+?)[01}?{${.3a,@(y9:listname?)[01}}{f}?{${.3a,@(y17:x" "%4${.3,@(y7:list2+?)[01}?{${.3a,@(y9:listname?)[01}}{f}?{${.3a,@(y17:x"
@ -763,104 +771,104 @@ char *t_code[] = {
",.1aq?{.0d,.6,.8,.4,.6,.8,.(i10),&6{%!0${.2,,#0.0,:3,:2,:1,:0,:4,:5,&7" ",.1aq?{.0d,.6,.8,.4,.6,.8,.(i10),&6{%!0${.2,,#0.0,:3,:2,:1,:0,:4,:5,&7"
"{%1.0p?{.0dp?{f}{:0},${:1,.3,:2,:3,:4,:5,.9a,@(y7:codegen)[07}.1d,:6^[" "{%1.0p?{.0dp?{f}{:0},${:1,.3,:2,:3,:4,:5,.9a,@(y7:codegen)[07}.1d,:6^["
"21}]1}.!0.0^_1[01}:5?{.0u}{f}?{:4,'(c])W0:4,:5,@(y20:write-serialized-" "21}]1}.!0.0^_1[01}:5?{.0u}{f}?{:4,'(c])W0:4,:5,@(y20:write-serialized-"
"arg)[12}]1},@(y13:apply-to-list)[72}'(y2:if),.1aq?{.0d,.6,.6,.6,.6,.6," "arg)[12}]1},@(y13:apply-to-list)[72}'(y2:if),.1aq?{.0d,.7,.3,.5,.7,.9,"
".(i12),&6{%3${:0,f,:4,:3,:2,:1,.8,@(y7:codegen)[07}:0,'(c?)W0:0,'(c{)W" ".(i11),&6{%3${:5,f,:1,:2,:3,:4,.8,@(y7:codegen)[07}:5,'(c?)W0:5,'(c{)W"
"0${:0,:5,:4,:3,:2,:1,.9,@(y7:codegen)[07}:0,'(c})W0:5?{:0,:5,:4,:3,:2," "0${:5,:0,:1,:2,:3,:4,.9,@(y7:codegen)[07}:5,'(c})W0:0?{:5,:0,:1,:2,:3,"
":1,.8,@(y7:codegen)[37}'(l1:y5:begin;),.3e,.0?{.0]4}.3?{:0,'(c{)W0${:0" ":4,.8,@(y7:codegen)[37}'(l1:y5:begin;),.3e,.0?{.0]4}:5,'(c{)W0${:5,:0,"
",:5,:4,:3,:2,:1,.(i11),@(y7:codegen)[07}:0,'(c})W0]4}f]4},@(y13:apply-" ":1,:2,:3,:4,.(i11),@(y7:codegen)[07}:5,'(c})W0]4},@(y13:apply-to-list)"
"to-list)[72}'(y6:lambda),.1aq?{.0d,.6,.8,.7,.7,.7,.7,&6{%2${.2,@(y15:f" "[72}'(y6:lambda),.1aq?{.0d,.6,.8,.7,.7,.7,.7,&6{%2${.2,@(y15:flatten-i"
"latten-idslist)[01},${:3,${.5,.8,@(y9:find-free)[02},@(y9:set-minus)[0" "dslist)[01},${:3,${.5,.8,@(y9:find-free)[02},@(y9:set-minus)[02},${.3,"
"2},${.3,.6,@(y9:find-sets)[02},${:0,.4A8,,#0.0,:4,:1,:3,&4{%2.0u?{]2}$" ".6,@(y9:find-sets)[02},${:0,.4A8,,#0.0,:4,:1,:3,&4{%2.0u?{]2}${:2,f,:0"
"{:2,f,:0,n,:1,.8,.8a,'(y3:ref),l2,@(y7:codegen)[07}:2,'(c,)W0.1,fc,.1d" ",n,:1,.8,.8a,'(y3:ref),l2,@(y7:codegen)[07}:2,'(c,)W0.1,fc,.1d,:3^[22}"
",:3^[22}.!0.0^_1[02}:4,'(c&)W0${:4,.4g,@(y20:write-serialized-arg)[02}" ".!0.0^_1[02}:4,'(c&)W0${:4,.4g,@(y20:write-serialized-arg)[02}:4,'(c{)"
":4,'(c{)W0.3L0?{:4,'(c%25)W0${:4,.6g,@(y20:write-serialized-arg)[02}}{" "W0.3L0?{:4,'(c%25)W0${:4,.6g,@(y20:write-serialized-arg)[02}}{:4,'(c%2"
":4,'(c%25)W0:4,'(c!)W0${:4,${.8,@(y17:idslist-req-count)[01},@(y20:wri" "5)W0:4,'(c!)W0${:4,${.8,@(y17:idslist-req-count)[01},@(y20:write-seria"
"te-serialized-arg)[02}}${'0,.5,,#0.0,.6,:4,&3{%2.0u?{]2}${:1,.3a,@(y11" "lized-arg)[02}}${'0,.5,,#0.0,.6,:4,&3{%2.0u?{]2}${:1,.3a,@(y11:set-mem"
":set-member?)[02}?{:0,'(c#)W0${:0,.4,@(y20:write-serialized-arg)[02}}'" "ber?)[02}?{:0,'(c#)W0${:0,.4,@(y20:write-serialized-arg)[02}}'1,.2I+,."
"1,.2I+,.1d,:2^[22}.!0.0^_1[02}${:4,.5g,:3,${${.(i10),:2,@(y13:set-inte" "1d,:2^[22}.!0.0^_1[02}${:4,.5g,:3,${${.(i10),:2,@(y13:set-intersect)[0"
"rsect)[02},.8,@(y9:set-union)[02},.7,.9,.(i12),@(y7:codegen)[07}:4,'(c" "2},.8,@(y9:set-union)[02},.7,.9,.(i12),@(y7:codegen)[07}:4,'(c})W0_1_1"
"})W0_1_1_1:5?{:4,'(c])W0:4,:5,@(y20:write-serialized-arg)[22}]2},@(y13" "_1:5?{:4,'(c])W0:4,:5,@(y20:write-serialized-arg)[22}]2},@(y13:apply-t"
":apply-to-list)[72}'(y7:lambda*),.1aq?{.0d,.6,.8,.5,.7,.9,.7,&6{%!0${:" "o-list)[72}'(y7:lambda*),.1aq?{.0d,.6,.8,.5,.7,.9,.7,&6{%!0${:0,.3A8,,"
"0,.3A8,,#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8ada,@(y7:co" "#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8ada,@(y7:codegen)[0"
"degen)[07}:3,'(c%25)W0:3,'(cx)W0:3,'(c,)W0.1,fc,.1d,:4^[22}.!0.0^_1[02" "7}:3,'(c%25)W0:3,'(cx)W0:3,'(c,)W0.1,fc,.1d,:4^[22}.!0.0^_1[02}:4,'(c&"
"}:4,'(c&)W0${:4,.3g,@(y20:write-serialized-arg)[02}:4,'(c{)W0${'0,.3,," ")W0${:4,.3g,@(y20:write-serialized-arg)[02}:4,'(c{)W0${'0,.3,,#0.0,:4,"
"#0.0,:4,&2{%2.0u?{]2}.0aa,.0a,.1da,:0,'(c|)W0.0?{:0,'(c!)W0}${:0,.4,@(" "&2{%2.0u?{]2}.0aa,.0a,.1da,:0,'(c|)W0.0?{:0,'(c!)W0}${:0,.4,@(y20:writ"
"y20:write-serialized-arg)[02}${:0,.7,@(y20:write-serialized-arg)[02}_1" "e-serialized-arg)[02}${:0,.7,@(y20:write-serialized-arg)[02}_1_1_1'1,."
"_1_1'1,.2I+,.1d,:1^[22}.!0.0^_1[02}:4,'(c%25)W0:4,'(c%25)W0:4,'(c})W0:" "2I+,.1d,:1^[22}.!0.0^_1[02}:4,'(c%25)W0:4,'(c%25)W0:4,'(c})W0:5?{:4,'("
"5?{:4,'(c])W0:4,:5,@(y20:write-serialized-arg)[12}]1},@(y13:apply-to-l" "c])W0:4,:5,@(y20:write-serialized-arg)[12}]1},@(y13:apply-to-list)[72}"
"ist)[72}'(y5:letcc),.1aq?{.0d,.4,.7,.7,.6,.6,.(i12),&6{%2.0,l1,${.2,.5" "'(y5:letcc),.1aq?{.0d,.4,.7,.7,.6,.6,.(i12),&6{%2.0,l1,${.2,.5,@(y9:fi"
",@(y9:find-sets)[02},${.2,${.6,:5,@(y9:set-minus)[02},@(y9:set-union)[" "nd-sets)[02},${.2,${.6,:5,@(y9:set-minus)[02},@(y9:set-union)[02},:4?{"
"02},:4?{:0,'(ck)W0${:0,:4,@(y20:write-serialized-arg)[02}:0,'(c,)W0${." ":0,'(ck)W0${:0,:4,@(y20:write-serialized-arg)[02}:0,'(c,)W0${.3,.6,@(y"
"3,.6,@(y11:set-member?)[02}?{:0,'(c#)W0:0,'(c0)W0}:0,'1,:4I+,:3,.3,:2," "11:set-member?)[02}?{:0,'(c#)W0:0,'(c0)W0}:0,'1,:4I+,:3,.3,:2,:1,.9c,."
":1,.9c,.(i10),@(y7:codegen)[57}:0,'(c$)W0:0,'(c{)W0:0,'(ck)W0:0,'(c0)W" "(i10),@(y7:codegen)[57}:0,'(c$)W0:0,'(c{)W0:0,'(ck)W0:0,'(c0)W0:0,'(c,"
"0:0,'(c,)W0${.3,.6,@(y11:set-member?)[02}?{:0,'(c#)W0:0,'(c0)W0}${:0,f" ")W0${.3,.6,@(y11:set-member?)[02}?{:0,'(c#)W0:0,'(c0)W0}${:0,f,:3,.5,:"
",:3,.5,:2,:1,fc,fc,.(i11)c,.(i12),@(y7:codegen)[07}:0,'(c_)W0${:0,'3,@" "2,:1,fc,fc,.(i11)c,.(i12),@(y7:codegen)[07}:0,'(c_)W0${:0,'3,@(y20:wri"
"(y20:write-serialized-arg)[02}:0,'(c})W0]5},@(y13:apply-to-list)[72}'(" "te-serialized-arg)[02}:0,'(c})W0]5},@(y13:apply-to-list)[72}'(y6:withc"
"y6:withcc),.1aq?{.0d,.7,.3,.5,.7,.9,&5{%2'(l3:y5:quote;y3:ref;y6:lambd" "c),.1aq?{.0d,.7,.3,.5,.7,.9,&5{%2'(l3:y5:quote;y3:ref;y6:lambda;),.2aA"
"a;),.2aA0?{${:4,f,:0,:1,:2,:3,.9,@(y7:codegen)[07}:4,'(c,)W0${:4,f,:0," "0?{${:4,f,:0,:1,:2,:3,.9,@(y7:codegen)[07}:4,'(c,)W0${:4,f,:0,:1,:2,:3"
":1,:2,:3,fc,.8,@(y7:codegen)[07}:4,'(cw)W0:4,'(c!)W0]2}${:4,f,:0,:1,:2" ",fc,.8,@(y7:codegen)[07}:4,'(cw)W0:4,'(c!)W0]2}${:4,f,:0,:1,:2,:3,.9,n"
",:3,.9,n,'(y6:lambda),l3,@(y7:codegen)[07}:4,'(c,)W0${:4,f,:0,:1,:2,:3" ",'(y6:lambda),l3,@(y7:codegen)[07}:4,'(c,)W0${:4,f,:0,:1,:2,:3,fc,.8,@"
",fc,.8,@(y7:codegen)[07}:4,'(cw)W0]2},@(y13:apply-to-list)[72}'(y10:in" "(y7:codegen)[07}:4,'(cw)W0]2},@(y13:apply-to-list)[72}'(y10:integrable"
"tegrable),.1aq?{.0d,.6,.8,.5,.7,.9,.7,&6{%!1'0,.2U8,.2U6,.0,'(l4:c0;c1" "),.1aq?{.0d,.6,.8,.5,.7,.9,.7,&6{%!1'0,.2U8,.2U6,.0,'(l4:c0;c1;c2;c3;)"
";c2;c3;),.1A1?{${:0,.6A8,,#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}${:3,f,:0,:1,:" ",.1A1?{${:0,.6A8,,#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8a"
"2,.8,.8a,@(y7:codegen)[07}.0du~?{:3,'(c,)W0}.1,fc,.1d,:4^[22}.!0.0^_1[" ",@(y7:codegen)[07}.0du~?{:3,'(c,)W0}.1,fc,.1d,:4^[22}.!0.0^_1[02}${:4,"
"02}${:4,.5,@(y12:write-string)[02}}{'(cp),.1v?{.3u?{'1,.5U8,${:4,.3,@(" ".5,@(y12:write-string)[02}}{'(cp),.1v?{.3u?{'1,.5U8,${:4,.3,@(y12:writ"
"y12:write-string)[02}_1}{'1,.4gI-,${:0,.7A8,,#0.0,:4,:3,:2,:1,&5{%2.0u"
"?{]2}${:3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}.0du~?{:3,'(c,)W0}.1,fc,."
"1d,:4^[22}.!0.0^_1[02}${'0,,#0.0,.8,:4,.7,&4{%1:0,.1I<!?{]1}${:1,:2,@("
"y12:write-string)[02}'1,.1I+,:3^[11}.!0.0^_1[01}_1}}{'(cm),.1v?{.3du?{"
"'1,.5U8,${:4,f,:1,:2,:3,:0,.(i12)a,@(y7:codegen)[07}${:4,.3,@(y12:writ"
"e-string)[02}_1}{'1,.4gI-,${:0,.7A8,,#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}${:" "e-string)[02}_1}{'1,.4gI-,${:0,.7A8,,#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}${:"
"3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}.0du~?{:3,'(c,)W0}.1,fc,.1d,:4^[2" "3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}.0du~?{:3,'(c,)W0}.1,fc,.1d,:4^[2"
"2}.!0.0^_1[02}${'0,,#0.0,.8,:4,.7,&4{%1:0,.1I<!?{]1}${:1,:2,@(y12:writ" "2}.!0.0^_1[02}${'0,,#0.0,.8,:4,.7,&4{%1:0,.1I<!?{]1}${:1,:2,@(y12:writ"
"e-string)[02}'1,.1I+,:3^[11}.!0.0^_1[01}_1}}{'(cc),.1v?{.3A8,'1,.5gI-," "e-string)[02}'1,.1I+,:3^[11}.!0.0^_1[01}_1}}{'(cm),.1v?{.3du?{'1,.5U8,"
"${:4,f,:1,:2,:3,:0,.9a,@(y7:codegen)[07}:4,'(c,)W0${:0,fc,.4d,,#0.0,:4" "${:4,f,:1,:2,:3,:0,.(i12)a,@(y7:codegen)[07}${:4,.3,@(y12:write-string"
",:3,:2,:1,&5{%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}.0du~?{" ")[02}_1}{'1,.4gI-,${:0,.7A8,,#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}${:3,f,:0,:"
":3,'(c,)W0:3,'(c,)W0}.1,fc,fc,.1d,:4^[22}.!0.0^_1[02}${'0,,#0.0,.9,:4," "1,:2,.8,.8a,@(y7:codegen)[07}.0du~?{:3,'(c,)W0}.1,fc,.1d,:4^[22}.!0.0^"
".7,&4{%1:0,.1I<!?{]1}.0I=0~?{:1,'(c;)W0}${:1,:2,@(y12:write-string)[02" "_1[02}${'0,,#0.0,.8,:4,.7,&4{%1:0,.1I<!?{]1}${:1,:2,@(y12:write-string"
"}'1,.1I+,:3^[11}.!0.0^_1[01}_2}{'(cx),.1v?{'1,.4gI-,${:0,.7A8,,#0.0,:4" ")[02}'1,.1I+,:3^[11}.!0.0^_1[01}_1}}{'(cc),.1v?{.3A8,'1,.5gI-,${:4,f,:"
",:3,:2,:1,&5{%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}.0du~?{" "1,:2,:3,:0,.9a,@(y7:codegen)[07}:4,'(c,)W0${:0,fc,.4d,,#0.0,:4,:3,:2,:"
":3,'(c,)W0}.1,fc,.1d,:4^[22}.!0.0^_1[02}${'0,,#0.0,.8,:4,.7,&4{%1:0,.1" "1,&5{%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}.0du~?{:3,'(c,)"
"I<!?{]1}${:1,:2,@(y12:write-string)[02}'1,.1I+,:3^[11}.!0.0^_1[01}_1}{" "W0:3,'(c,)W0}.1,fc,fc,.1d,:4^[22}.!0.0^_1[02}${'0,,#0.0,.9,:4,.7,&4{%1"
"'(cu),.1v?{.3u?{${:4,'1,.8U8,@(y12:write-string)[02}}{${:4,f,:1,:2,:3," ":0,.1I<!?{]1}.0I=0~?{:1,'(c;)W0}${:1,:2,@(y12:write-string)[02}'1,.1I+"
":0,.(i11)a,@(y7:codegen)[07}}${:4,.5,@(y12:write-string)[02}}{'(cb),.1" ",:3^[11}.!0.0^_1[01}_2}{'(cx),.1v?{'1,.4gI-,${:0,.7A8,,#0.0,:4,:3,:2,:"
"v?{.3du?{${:4,'1,.8U8,@(y12:write-string)[02}}{${:4,f,:1,:2,:3,:0,.(i1" "1,&5{%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}.0du~?{:3,'(c,)"
"1)da,@(y7:codegen)[07}}:4,'(c,)W0${:4,f,:1,:2,:3,:0,fc,.(i11)a,@(y7:co" "W0}.1,fc,.1d,:4^[22}.!0.0^_1[02}${'0,,#0.0,.8,:4,.7,&4{%1:0,.1I<!?{]1}"
"degen)[07}${:4,.5,@(y12:write-string)[02}}{'(ct),.1v?{.3ddu?{${:4,'1,." "${:1,:2,@(y12:write-string)[02}'1,.1I+,:3^[11}.!0.0^_1[01}_1}{'(cu),.1"
"8U8,@(y12:write-string)[02}}{${:4,f,:1,:2,:3,:0,.(i11)dda,@(y7:codegen" "v?{.3u?{${:4,'1,.8U8,@(y12:write-string)[02}}{${:4,f,:1,:2,:3,:0,.(i11"
")[07}}:4,'(c,)W0${:4,f,:1,:2,:3,:0,fc,.(i11)da,@(y7:codegen)[07}:4,'(c" ")a,@(y7:codegen)[07}}${:4,.5,@(y12:write-string)[02}}{'(cb),.1v?{.3du?"
",)W0${:4,f,:1,:2,:3,:0,fc,fc,.(i11)a,@(y7:codegen)[07}${:4,.5,@(y12:wr" "{${:4,'1,.8U8,@(y12:write-string)[02}}{${:4,f,:1,:2,:3,:0,.(i11)da,@(y"
"ite-string)[02}}{'(c#),.1v?{${:0,.6A8,,#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}$" "7:codegen)[07}}:4,'(c,)W0${:4,f,:1,:2,:3,:0,fc,.(i11)a,@(y7:codegen)[0"
"{:3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}:3,'(c,)W0.1,fc,.1d,:4^[22}.!0." "7}${:4,.5,@(y12:write-string)[02}}{'(ct),.1v?{.3ddu?{${:4,'1,.8U8,@(y1"
"0^_1[02}${:4,.5,@(y12:write-string)[02}${:4,.6g,@(y20:write-serialized" "2:write-string)[02}}{${:4,f,:1,:2,:3,:0,.(i11)dda,@(y7:codegen)[07}}:4"
"-arg)[02}}{${.3,'(s27:unsupported integrable type),@(y7:c-error)[02}}}" ",'(c,)W0${:4,f,:1,:2,:3,:0,fc,.(i11)da,@(y7:codegen)[07}:4,'(c,)W0${:4"
"}}}}}}}_1_2:5?{:4,'(c])W0:4,:5,@(y20:write-serialized-arg)[22}]2},@(y1" ",f,:1,:2,:3,:0,fc,fc,.(i11)a,@(y7:codegen)[07}${:4,.5,@(y12:write-stri"
"3:apply-to-list)[72}'(y4:call),.1aq?{.0d,.7,.4,.6,.8,.6,.(i11),&6{%!1'" "ng)[02}}{'(c#),.1v?{${:0,.6A8,,#0.0,:4,:3,:2,:1,&5{%2.0u?{]2}${:3,f,:0"
"(y6:lambda),.2aq?{.1daL0?{.1dag,.1gI=}{f}}{f}?{${:1,.3A8,,#0.0,:5,:4,:" ",:1,:2,.8,.8a,@(y7:codegen)[07}:3,'(c,)W0.1,fc,.1d,:4^[22}.!0.0^_1[02}"
"3,:2,&5{%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}:3,'(c,)W0.1" "${:4,.5,@(y12:write-string)[02}${:4,.6g,@(y20:write-serialized-arg)[02"
",fc,.1d,:4^[22}.!0.0^_1[02}.1da,.2dda,${.3,.3,@(y9:find-sets)[02},${.2" "}}{${.3,'(s27:unsupported integrable type),@(y7:c-error)[02}}}}}}}}}}_"
",${.7,:3,@(y9:set-minus)[02},@(y9:set-union)[02},:1,.4L6,${'0,.7,,#0.0" "1_2:5?{:4,'(c])W0:4,:5,@(y20:write-serialized-arg)[22}]2},@(y13:apply-"
",.8,:5,&3{%2.0u?{]2}${:1,.3a,@(y11:set-member?)[02}?{:0,'(c#)W0${:0,.4" "to-list)[72}'(y4:call),.1aq?{.0d,.7,.4,.6,.8,.6,.(i11),&6{%!1'(y6:lamb"
",@(y20:write-serialized-arg)[02}}'1,.2I+,.1d,:2^[22}.!0.0^_1[02}:0?{:5" "da),.2aq?{.1daL0?{.1dag,.1gI=}{f}}{f}?{${:1,.3A8,,#0.0,:5,:4,:3,:2,&5{"
",.6g,:0I+,:2,.4,:4,.5,.9,@(y7:codegen)[77}${:5,f,:2,.6,:4,.7,.(i11),@(" "%2.0u?{]2}${:3,f,:0,:1,:2,.8,.8a,@(y7:codegen)[07}:3,'(c,)W0.1,fc,.1d,"
"y7:codegen)[07}:5,'(c_)W0:5,.6g,@(y20:write-serialized-arg)[72}:0?{${:" ":4^[22}.!0.0^_1[02}.1da,.2dda,${.3,.3,@(y9:find-sets)[02},${.2,${.7,:3"
"1,.3A8,,#0.0,:5,:4,:3,:2,.(i11),&6{%2.0u?{:4,f,:1,:2,:3,.6,:0,@(y7:cod" ",@(y9:set-minus)[02},@(y9:set-union)[02},:1,.4L6,${'0,.7,,#0.0,.8,:5,&"
"egen)[27}${:4,f,:1,:2,:3,.8,.8a,@(y7:codegen)[07}:4,'(c,)W0.1,fc,.1d,:" "3{%2.0u?{]2}${:1,.3a,@(y11:set-member?)[02}?{:0,'(c#)W0${:0,.4,@(y20:w"
"5^[22}.!0.0^_1[02}:5,'(c[)W0${:5,:0,@(y20:write-serialized-arg)[02}:5," "rite-serialized-arg)[02}}'1,.2I+,.1d,:2^[22}.!0.0^_1[02}:0?{:5,.6g,:0I"
".1g,@(y20:write-serialized-arg)[22}:5,'(c$)W0:5,'(c{)W0${:1,fc,fc,.3A8" "+,:2,.4,:4,.5,.9,@(y7:codegen)[77}${:5,f,:2,.6,:4,.7,.(i11),@(y7:codeg"
",,#0.0,:5,:4,:3,:2,.(i11),&6{%2.0u?{:4,f,:1,:2,:3,.6,:0,@(y7:codegen)[" "en)[07}:5,'(c_)W0:5,.6g,@(y20:write-serialized-arg)[72}:0?{${:1,.3A8,,"
"27}${:4,f,:1,:2,:3,.8,.8a,@(y7:codegen)[07}:4,'(c,)W0.1,fc,.1d,:5^[22}" "#0.0,:5,:4,:3,:2,.(i11),&6{%2.0u?{:4,f,:1,:2,:3,.6,:0,@(y7:codegen)[27"
".!0.0^_1[02}:5,'(c[)W0${:5,'0,@(y20:write-serialized-arg)[02}${:5,.3g," "}${:4,f,:1,:2,:3,.8,.8a,@(y7:codegen)[07}:4,'(c,)W0.1,fc,.1d,:5^[22}.!"
"@(y20:write-serialized-arg)[02}:5,'(c})W0]2},@(y13:apply-to-list)[72}'" "0.0^_1[02}:5,'(c[)W0${:5,:0,@(y20:write-serialized-arg)[02}:5,.1g,@(y2"
"(y3:asm),.1aq?{.0d,.6,.8,&2{%1${:0,.3,@(y12:write-string)[02}:1?{:0,'(" "0:write-serialized-arg)[22}:5,'(c$)W0:5,'(c{)W0${:1,fc,fc,.3A8,,#0.0,:"
"c])W0:0,:1,@(y20:write-serialized-arg)[12}]1},@(y13:apply-to-list)[72}" "5,:4,:3,:2,.(i11),&6{%2.0u?{:4,f,:1,:2,:3,.6,:0,@(y7:codegen)[27}${:4,"
"'(y4:once),.1aq?{.0d,.7,.7,.7,.7,.7,.7,&6{%2:5,:4,:3,:2,:1,:0,n,n,.9c," "f,:1,:2,:3,.8,.8a,@(y7:codegen)[07}:4,'(c,)W0.1,fc,.1d,:5^[22}.!0.0^_1"
"n,n,tc,'(y5:quote)cc,.9c,'(y5:gset!)cc,'(y5:begin)cc,n,'(y5:begin)cc,n" "[02}:5,'(c[)W0${:5,'0,@(y20:write-serialized-arg)[02}${:5,.3g,@(y20:wr"
",n,tc,'(y5:quote)cc,n,.9c,'(y4:gref)cc,'(y3:eq?)U5c,'(y10:integrable)c" "ite-serialized-arg)[02}:5,'(c})W0]2},@(y13:apply-to-list)[72}'(y3:asm)"
"c,'(y2:if)c,@(y7:codegen)[27},@(y13:apply-to-list)[72}'(l4:y6:define;y" ",.1aq?{.0d,.6,.8,&2{%1${:0,.3,@(y12:write-string)[02}:1?{:0,'(c])W0:0,"
"13:define-syntax;y14:define-library;y6:import;),.1aA0?{.0d,.1,&1{%!0:0" ":1,@(y20:write-serialized-arg)[12}]1},@(y13:apply-to-list)[72}'(y4:onc"
",'(s25:misplaced definition form),@(y7:c-error)[12},@(y13:apply-to-lis" "e),.1aq?{.0d,.7,.7,.7,.7,.7,.7,&6{%2:5,:4,:3,:2,:1,:0,n,n,.9c,n,n,tc,'"
"t)[72}.0,'(s22:unexpected <core> form),@(y7:c-error)[72", "(y5:quote)cc,.9c,'(y5:gset!)cc,'(y5:begin)cc,n,'(y5:begin)cc,n,n,tc,'("
"y5:quote)cc,n,.9c,'(y4:gref)cc,'(y3:eq?)U5c,'(y10:integrable)cc,'(y2:i"
"f)c,@(y7:codegen)[27},@(y13:apply-to-list)[72}'(l4:y6:define;y13:defin"
"e-syntax;y14:define-library;y6:import;),.1aA0?{.0d,.1,&1{%!0:0,'(s25:m"
"isplaced definition form),@(y7:c-error)[12},@(y13:apply-to-list)[72}.0"
",'(s22:unexpected <core> form),@(y7:c-error)[72",
"P", "compile-to-string", "P", "compile-to-string",
"%1P51,${.2,f,${n,.8,@(y9:find-free)[02},n,n,n,.9,@(y7:codegen)[07}.0P9" "%1P51,${.2,f,${n,.8,@(y9:find-free)[02},n,n,n,.9,@(y7:codegen)[07}.0P9"
@ -990,6 +998,15 @@ char *t_code[] = {
"%3'1,.1V3-,.2p?{.0}{.0,.3H2},.0,.3V4,.4p?{.0,.5A5}{.0,.5A3},.0?{.0d]7}" "%3'1,.1V3-,.2p?{.0}{.0,.3H2},.0,.3V4,.4p?{.0,.5A5}{.0,.5A3},.0?{.0d]7}"
".6?{${.7,.9[01},.0~?{f]8}.0Y2?{.0]8}.0b,.3,.1,.9cc,.5,.8V5.0]9}f]7", ".6?{${.7,.9[01},.0~?{f]8}.0Y2?{.0]8}.0b,.3,.1,.9cc,.5,.8V5.0]9}f]7",
"P", "name-install!",
"%3'1,.1V3-,.2p?{.0}{.0,.3H2},.0,.3V4,.4p?{.0,.5A5}{.0,.5A3},.0?{.6,.1d"
"q}{f}?{'(y4:same)]7}.0?{.6,.1sd'(y8:modified)]7}.1,.7,.7cc,.3,.6V5'(y5"
":added)]7",
"P", "name-remove!",
"%2'1,.1V3-,.2p?{.0}{.0,.3H2},${&0{%2.1,.1ae]2},.3,.6V4,.7,@(y7:remove!"
")[03},.1,.4V5]4",
"C", 0, "C", 0,
"${'(i300),@(y18:make-name-registry)[01}@!(y20:*root-name-registry*)", "${'(i300),@(y18:make-name-registry)[01}@!(y20:*root-name-registry*)",
@ -1158,42 +1175,42 @@ char *t_code[] = {
";l1:y7:fxeven?;;l1:y6:fxodd?;;l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:f" ";l1:y7:fxeven?;;l1:y6:fxodd?;;l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:f"
"x/;;l1:y10:fxquotient;;l1:y11:fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmod" "x/;;l1:y10:fxquotient;;l1:y11:fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmod"
"ulo;;l1:y8:fxeucquo;;l1:y8:fxeucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:f" "ulo;;l1:y8:fxeucquo;;l1:y8:fxeucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:f"
"x<?;;l1:y5:fx<=?;;l1:y4:fx>?;;l1:y5:fx>=?;;l1:y4:fx=?;;l3:y5:fx!=?;y1:" "x<?;;l1:y5:fx<=?;;l1:y4:fx>?;;l1:y5:fx>=?;;l1:y4:fx=?;;l1:y5:fx!=?;;l1"
"x;y1:y;;l1:y5:fxmin;;l1:y5:fxmax;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y5:fxgc" ":y5:fxmin;;l1:y5:fxmax;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y5:fxgcd;;l1:y6:f"
"d;;l1:y6:fxexpt;;l1:y6:fxsqrt;;l1:y5:fxnot;;l1:y5:fxand;;l1:y5:fxior;;" "xexpt;;l1:y6:fxsqrt;;l1:y5:fxnot;;l1:y5:fxand;;l1:y5:fxior;;l1:y5:fxxo"
"l1:y5:fxxor;;l1:y5:fxsll;;l1:y5:fxsrl;;l1:y14:fixnum->flonum;;l1:y14:f" "r;;l1:y5:fxsll;;l1:y5:fxsrl;;l1:y14:fixnum->flonum;;l1:y14:fixnum->str"
"ixnum->string;;l1:y14:string->fixnum;;l1:y7:flonum?;;l1:y7:flzero?;;l1" "ing;;l1:y14:string->fixnum;;l1:y7:flonum?;;l1:y7:flzero?;;l1:y11:flpos"
":y11:flpositive?;;l1:y11:flnegative?;;l1:y10:flinteger?;;l1:y6:flnan?;" "itive?;;l1:y11:flnegative?;;l1:y10:flinteger?;;l1:y6:flnan?;;l1:y11:fl"
";l1:y11:flinfinite?;;l1:y9:flfinite?;;l1:y7:fleven?;;l1:y6:flodd?;;l1:" "infinite?;;l1:y9:flfinite?;;l1:y7:fleven?;;l1:y6:flodd?;;l1:y3:fl+;;l1"
"y3:fl+;;l1:y3:fl*;;l1:y3:fl-;;l1:y3:fl/;;l1:y5:flneg;;l1:y5:flabs;;l1:" ":y3:fl*;;l1:y3:fl-;;l1:y3:fl/;;l1:y5:flneg;;l1:y5:flabs;;l1:y5:flgcd;;"
"y5:flgcd;;l1:y6:flexpt;;l1:y6:flsqrt;;l1:y7:flfloor;;l1:y9:flceiling;;" "l1:y6:flexpt;;l1:y6:flsqrt;;l1:y7:flfloor;;l1:y9:flceiling;;l1:y10:flt"
"l1:y10:fltruncate;;l1:y7:flround;;l1:y5:flexp;;l1:y5:fllog;;l1:y5:flsi" "runcate;;l1:y7:flround;;l1:y5:flexp;;l1:y5:fllog;;l1:y5:flsin;;l1:y5:f"
"n;;l1:y5:flcos;;l1:y5:fltan;;l1:y6:flasin;;l1:y6:flacos;;l2:y6:flatan;" "lcos;;l1:y5:fltan;;l1:y6:flasin;;l1:y6:flacos;;l2:y6:flatan;l1:y1:y;;;"
"l1:y1:y;;;l1:y4:fl<?;;l1:y5:fl<=?;;l1:y4:fl>?;;l1:y5:fl>=?;;l1:y4:fl=?" "l1:y4:fl<?;;l1:y5:fl<=?;;l1:y4:fl>?;;l1:y5:fl>=?;;l1:y4:fl=?;;l1:y5:fl"
";;l1:y5:fl!=?;;l1:y5:flmin;;l1:y5:flmax;;l1:y14:flonum->fixnum;;l1:y14" "!=?;;l1:y5:flmin;;l1:y5:flmax;;l1:y14:flonum->fixnum;;l1:y14:flonum->s"
":flonum->string;;l1:y14:string->flonum;;l1:y8:list-cat;;l1:y4:meme;;l1" "tring;;l1:y14:string->flonum;;l1:y8:list-cat;;l1:y4:meme;;l1:y4:asse;;"
":y4:asse;;l1:y8:reverse!;;l1:y9:circular?;;l1:y8:char-cmp;;l1:y11:char" "l1:y8:reverse!;;l1:y9:circular?;;l1:y8:char-cmp;;l1:y11:char-ci-cmp;;l"
"-ci-cmp;;l1:y10:string-cat;;l1:y15:string-position;;l1:y10:string-cmp;" "1:y10:string-cat;;l1:y15:string-position;;l1:y10:string-cmp;;l1:y13:st"
";l1:y13:string-ci-cmp;;l1:y10:vector-cat;;l1:y16:bytevector->list;;l1:" "ring-ci-cmp;;l1:y10:vector-cat;;l1:y16:bytevector->list;;l1:y16:list->"
"y16:list->bytevector;;l1:y13:subbytevector;;l1:y19:standard-input-port" "bytevector;;l1:y13:subbytevector;;l1:y19:standard-input-port;;l1:y20:s"
";;l1:y20:standard-output-port;;l1:y19:standard-error-port;;l1:y11:rena" "tandard-output-port;;l1:y19:standard-error-port;;l1:y11:rename-file;;)"
"me-file;;),&0{%1,,,,#0#1#2#3&0{%1.0,'(y1:w),.1v?{'(l2:y6:scheme;y5:wri" ",&0{%1,,,,#0#1#2#3&0{%1.0,'(y1:w),.1v?{'(l2:y6:scheme;y5:write;)]2}'(y"
"te;)]2}'(y1:t),.1v?{'(l2:y6:scheme;y4:time;)]2}'(y1:p),.1v?{'(l2:y6:sc" "1:t),.1v?{'(l2:y6:scheme;y4:time;)]2}'(y1:p),.1v?{'(l2:y6:scheme;y4:re"
"heme;y4:repl;)]2}'(y1:r),.1v?{'(l2:y6:scheme;y4:read;)]2}'(y1:v),.1v?{" "pl;)]2}'(y1:r),.1v?{'(l2:y6:scheme;y4:read;)]2}'(y1:v),.1v?{'(l2:y6:sc"
"'(l2:y6:scheme;y4:r5rs;)]2}'(y1:u),.1v?{'(l2:y6:scheme;y9:r5rs-null;)]" "heme;y4:r5rs;)]2}'(y1:u),.1v?{'(l2:y6:scheme;y9:r5rs-null;)]2}'(y1:d),"
"2}'(y1:d),.1v?{'(l2:y6:scheme;y4:load;)]2}'(y1:z),.1v?{'(l2:y6:scheme;" ".1v?{'(l2:y6:scheme;y4:load;)]2}'(y1:z),.1v?{'(l2:y6:scheme;y4:lazy;)]"
"y4:lazy;)]2}'(y1:s),.1v?{'(l2:y6:scheme;y15:process-context;)]2}'(y1:i" "2}'(y1:s),.1v?{'(l2:y6:scheme;y15:process-context;)]2}'(y1:i),.1v?{'(l"
"),.1v?{'(l2:y6:scheme;y7:inexact;)]2}'(y1:f),.1v?{'(l2:y6:scheme;y4:fi" "2:y6:scheme;y7:inexact;)]2}'(y1:f),.1v?{'(l2:y6:scheme;y4:file;)]2}'(y"
"le;)]2}'(y1:e),.1v?{'(l2:y6:scheme;y4:eval;)]2}'(y1:o),.1v?{'(l2:y6:sc" "1:e),.1v?{'(l2:y6:scheme;y4:eval;)]2}'(y1:o),.1v?{'(l2:y6:scheme;y7:co"
"heme;y7:complex;)]2}'(y1:h),.1v?{'(l2:y6:scheme;y4:char;)]2}'(y1:l),.1" "mplex;)]2}'(y1:h),.1v?{'(l2:y6:scheme;y4:char;)]2}'(y1:l),.1v?{'(l2:y6"
"v?{'(l2:y6:scheme;y11:case-lambda;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:c" ":scheme;y11:case-lambda;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:cxr;)]2}'(y"
"xr;)]2}'(y1:b),.1v?{'(l2:y6:scheme;y4:base;)]2}]2}.!0&0{%1${&0{%1n,'(l" "1:b),.1v?{'(l2:y6:scheme;y4:base;)]2}]2}.!0&0{%1${&0{%1n,'(l1:y5:begin"
"1:y5:begin;),V12]1},.3,@(y20:*root-name-registry*),@(y11:name-lookup)[" ";),V12]1},.3,@(y20:*root-name-registry*),@(y11:name-lookup)[03}z]1}.!1"
"03}z]1}.!1&0{%3'1,.1V4,.0,.3A3,.0?{.4,.1sd]5}.1,.5,.5cc,'1,.4V5]5}.!2&" "&0{%3'1,.1V4,.0,.3A3,.0?{.4,.1sd]5}.1,.5,.5cc,'1,.4V5]5}.!2&0{%1&0{%1."
"0{%1&0{%1.0,'(y5:const),l2]1},.1,@(y20:*root-name-registry*),@(y11:nam" "0,'(y5:const),l2]1},.1,@(y20:*root-name-registry*),@(y11:name-lookup)["
"e-lookup)[13}.!3.4d,.5a,,#0.0,.6,.5,.7,.(i10),&5{%2.1u?{${.2,:0^[01},." "13}.!3.4d,.5a,,#0.0,.6,.5,.7,.(i10),&5{%2.1u?{${.2,:0^[01},.1,${'(l1:y"
"1,${'(l1:y4:repl;),:1^[01},:3^[23}${${.4,:0^[01},.3,${${.9a,:2^[01},:1" "4:repl;),:1^[01},:3^[23}${${.4,:0^[01},.3,${${.9a,:2^[01},:1^[01},:3^["
"^[01},:3^[03}.1d,.1,:4^[22}.!0.0^_1[52},@(y10:%25for-each1)[02}", "03}.1d,.1,:4^[22}.!0.0^_1[52},@(y10:%25for-each1)[02}",
"C", 0, "C", 0,
"${'(i100),@(y18:make-name-registry)[01}@!(y20:*user-name-registry*)", "${'(i100),@(y18:make-name-registry)[01}@!(y20:*user-name-registry*)",
@ -1215,14 +1232,19 @@ char *t_code[] = {
"P", "make-repl-environment", "P", "make-repl-environment",
"%3,#0.3,&1{%1.0,:0,@(y37:fully-qualified-library-prefixed-name)[12}.!0" "%3,#0.3,&1{%1.0,:0,@(y37:fully-qualified-library-prefixed-name)[12}.!0"
".2,.1,.3,&3{%2.0K0?{.1,'(l2:y3:ref;y4:set!;),.1A1?{.1,@(y7:old-den)[31" ".2,.2,.2,&3{%2.0K0?{.1,'(l2:y3:ref;y4:set!;),.1A1?{.1,@(y7:old-den)[31"
"}f]3}'(y3:ref),.2q?{:0,.1,:1,&3{%1${f,:1,:2,@(y11:name-lookup)[03},.0?" "}f]3}'(y3:ref),.2q?{:1,.1,:0,&3{%1${f,:1,:2,@(y11:name-lookup)[03},.0?"
"{.0]2}:1Y0?{${:1,:0^[01},'(y3:ref),l2]2}f]2},.1,:2,@(y11:name-lookup)[" "{.0]2}:1Y0?{${:1,:0^[01},'(y3:ref),l2]2}f]2},.1,:2,@(y11:name-lookup)["
"23}'(y4:set!),.2q?{.0Y0?{.0,:1,:0,&3{%1${f,:2,:0,@(y11:name-lookup)[03" "23}'(y4:set!),.2q?{.0Y0?{.0,:0,:1,&3{%1${f,:2,:0,@(y11:name-lookup)[03"
"}~?{${:2,:1^[01},'(y3:ref),l2]1}f]1},.1,:2,@(y11:name-lookup)[23}f]2}'" "}~?{${:2,:1^[01},'(y3:ref),l2]1}f]1},.1,:2,@(y11:name-lookup)[23}f]2}'"
"(y6:define),.2q?{.0Y0?{:1,.1,&2{%1${:0,:1^[01},'(y3:ref),l2]1},.1,:2,@" "(y6:define),.2q?{.0Y0?{:0,.1,&2{%1${:0,:1^[01},'(y3:ref),l2]1},.1,:2,@"
"(y11:name-lookup)[23}f]2}'(y13:define-syntax),.2q?{&0{%1Y9]1},.1,:2,@(" "(y11:name-lookup)[23}f]2}'(y13:define-syntax),.2q?{&0{%1Y9]1},.1,:2,@("
"y11:name-lookup)[23}f]2}]4", "y11:name-lookup)[23}'(y6:import),.2q?{${.2,'(l2:py8:<symbol>;zy1:*;;;y"
"3:...;),@(y11:sexp-match?)[02}}{f}?{'0,'0,'0,.3,,#0:2,:1,.2,&3{%4.0u?{"
".3,.3,.3,l3]4}.0d,.1ad,.2aa,${.2,:2,@(y12:name-remove!)[02}${.3,.3,:1,"
"@(y13:name-install!)[03},'(y4:same),.1v?{.7,.7,'1,.8+,.6,:0^[84}'(y8:m"
"odified),.1v?{.7,'1,.8+,.7,.6,:0^[84}'(y5:added),.1v?{'1,.8+,.7,.7,.6,"
":0^[84}]8}.!0.0^_1[24}f]2}]4",
"C", 0, "C", 0,
"${@(y20:*root-name-registry*),@(y25:make-readonly-environment)[01}@!(y" "${@(y20:*root-name-registry*),@(y25:make-readonly-environment)[01}@!(y"
@ -1260,15 +1282,18 @@ char *t_code[] = {
"xenv-lookup)[03},.0?{.1dda,.0,.2sz_1}{${.6,.4da,'(s50:identifier canno" "xenv-lookup)[03},.0?{.1dda,.0,.2sz_1}{${.6,.4da,'(s50:identifier canno"
"t be (re)defined as syntax in env:),@(y7:x-error)[03}}@(y9:*verbose*)?" "t be (re)defined as syntax in env:),@(y7:x-error)[03}}@(y9:*verbose*)?"
"{Po,'(s19:LIBRARY INSTALLED: )W4Po,.2daW5PoW6]5}]5}'(y6:import),.1q?{$" "{Po,'(s19:LIBRARY INSTALLED: )W4Po,.2daW5PoW6]5}]5}'(y6:import),.1q?{$"
"{t,.5,.5d,.6a,@(y12:xform-import)[04},.0da,'0,.1V4,'1,.2V4,,#0.7,&1{%1" "{t,.5,.5d,.6a,@(y12:xform-import)[04},.0da,'0,.1V4,'1,.2V4,${'(y6:impo"
":0,.1dz,@(y15:syntax-quote-id),l2,.2a,@(y16:define-syntax-id),l3,@(y18" "rt),.3,.(i10)[02},${.2,'(l3:y8:<number>;y8:<number>;y8:<number>;),@(y1"
":repl-eval-top-form)[12}.!0${.4,@(y30:repl-compile-and-run-core-expr)[" "1:sexp-match?)[02}?{@(y9:*verbose*)?{Po,'(s8:IMPORT: )W4Po,.1aW5Po,'(s"
"01}.1,.1^,@(y10:%25for-each1)[82}.0K0?{.2,${.5,.5,.5[02},@(y18:repl-ev" "24: bindings are the same, )W4Po,.1daW5Po,'(s11: modified, )W4Po,.1dda"
"al-top-form)[32}.0U0?{${.4,.4d,.4,@(y16:xform-integrable)[03},@(y30:re" "W5Po,'(s7: added%0a)W4}}{${.3,.(i10),'(s49:failed to import to env, im"
"pl-compile-and-run-core-expr)[31}.0Y0?{${.4,.4,f,@(y5:xform)[03},@(y30" "port is not supported:),@(y7:x-error)[03}}_1.1,@(y30:repl-compile-and-"
":repl-compile-and-run-core-expr)[31}${.4,.4d,.4,@(y10:xform-call)[03}," "run-core-expr)[71}.0K0?{.2,${.5,.5,.5[02},@(y18:repl-eval-top-form)[32"
"@(y30:repl-compile-and-run-core-expr)[31}${.3,.3,f,@(y5:xform)[03},@(y" "}.0U0?{${.4,.4d,.4,@(y16:xform-integrable)[03},@(y30:repl-compile-and-"
"30:repl-compile-and-run-core-expr)[21", "run-core-expr)[31}.0Y0?{${.4,.4,f,@(y5:xform)[03},@(y30:repl-compile-a"
"nd-run-core-expr)[31}${.4,.4d,.4,@(y10:xform-call)[03},@(y30:repl-comp"
"ile-and-run-core-expr)[31}${.3,.3,f,@(y5:xform)[03},@(y30:repl-compile"
"-and-run-core-expr)[21",
"P", "repl-read", "P", "repl-read",
"%2.1?{PoW6Po,.2W4Po,'(s1: )W4}.0,@(y14:read-code-sexp)[21", "%2.1?{PoW6Po,.2W4Po,'(s1: )W4}.0,@(y14:read-code-sexp)[21",
@ -1283,28 +1308,37 @@ char *t_code[] = {
"(y3:ref),.4^a,@(y16:repl-environment)[02}W5.4W6]5}${.3^,'(l2:y3:ref;l3" "(y3:ref),.4^a,@(y16:repl-environment)[02}W5.4W6]5}${.3^,'(l2:y3:ref;l3"
":y1:*;y1:*;y3:...;;),@(y11:sexp-match?)[02}?{.4,${'(y3:ref),.4^a,@(y16" ":y1:*;y1:*;y3:...;;),@(y11:sexp-match?)[02}?{.4,${'(y3:ref),.4^a,@(y16"
":repl-environment)[02}W5.4W6]5}${.3^,'(l1:y3:rnr;),@(y11:sexp-match?)[" ":repl-environment)[02}W5.4W6]5}${.3^,'(l1:y3:rnr;),@(y11:sexp-match?)["
"02}?{.4,@(y20:*root-name-registry*)W5.4W6]5}${.3^,'(l2:y3:rnr;y1:*;),@" "02}?{.4,@(y20:*root-name-registry*)W5.4W6]5}${.3^,'(l2:y4:rref;y1:*;),"
"(y11:sexp-match?)[02}?{.4,${f,.4^a,@(y20:*root-name-registry*),@(y11:n" "@(y11:sexp-match?)[02}?{.4,${f,.4^a,@(y20:*root-name-registry*),@(y11:"
"ame-lookup)[03}W5.4W6]5}${.3^,'(l1:y3:unr;),@(y11:sexp-match?)[02}?{.4" "name-lookup)[03}W5.4W6]5}${.3^,'(l2:y5:rrem!;y1:*;),@(y11:sexp-match?)"
",@(y20:*user-name-registry*)W5.4W6]5}${.3^,'(l2:y3:unr;y1:*;),@(y11:se" "[02}?{${f,.3^a,@(y20:*root-name-registry*),@(y11:name-lookup)[03}?{${."
"xp-match?)[02}?{.4,${f,.4^a,@(y20:*user-name-registry*),@(y11:name-loo" "2^a,@(y20:*root-name-registry*),@(y12:name-remove!)[02}.4,'(s6:done!%0"
"kup)[03}W5.4W6]5}${.3^,'(l2:y4:peek;y1:*;),@(y11:sexp-match?)[02}?{.0^" "a)W4]5}.4,'(s16:name not found: )W4.4,@(y4:name)W5.4W6]5}${.3^,'(l1:y3"
"aS0?{.4,.1^aF0?{'(s12:file exists%0a)}{'(s20:file does not exist%0a)}W" ":unr;),@(y11:sexp-match?)[02}?{.4,@(y20:*user-name-registry*)W5.4W6]5}"
"4]5}.0^aY0?{.4,.1^aX4F0?{'(s12:file exists%0a)}{'(s20:file does not ex" "${.3^,'(l2:y4:uref;y1:*;),@(y11:sexp-match?)[02}?{.4,${f,.4^a,@(y20:*u"
"ist%0a)}W4]5}.4,'(s37:invalid file name; use double quotes%0a)W4]5}${." "ser-name-registry*),@(y11:name-lookup)[03}W5.4W6]5}${.3^,'(l2:y5:urem!"
"3^,'(l2:y7:verbose;y2:on;),@(y11:sexp-match?)[02}?{t@!(y9:*verbose*)]5" ";y1:*;),@(y11:sexp-match?)[02}?{${f,.3^a,@(y20:*user-name-registry*),@"
"}${.3^,'(l2:y7:verbose;y3:off;),@(y11:sexp-match?)[02}?{f@!(y9:*verbos" "(y11:name-lookup)[03}?{${.2^a,@(y20:*user-name-registry*),@(y12:name-r"
"e*)]5}${.3^,'(l1:y4:help;),@(y11:sexp-match?)[02}?{.4,'(s20:Available " "emove!)[02}.4,'(s6:done!%0a)W4]5}.4,'(s16:name not found: )W4.4,@(y4:n"
"commands:%0a)W4.4,'(s42: ,say hello -- displays nice greeting%0a)W" "ame)W5.4W6]5}${.3^,'(l2:y4:peek;y1:*;),@(y11:sexp-match?)[02}?{.0^aS0?"
"4.4,'(s40: ,peek <fname> -- check if file exists%0a)W4.4,'(s37: ,verb" "{.4,.1^aF0?{'(s12:file exists%0a)}{'(s20:file does not exist%0a)}W4]5}"
"ose on -- turn verbosity on%0a)W4.4,'(s38: ,verbose off -- turn v" ".0^aY0?{.4,.1^aX4F0?{'(s12:file exists%0a)}{'(s20:file does not exist%"
"erbosity off%0a)W4.4,'(s54: ,ref <name> -- show current denotation " "0a)}W4]5}.4,'(s37:invalid file name; use double quotes%0a)W4]5}${.3^,'"
"for <name>%0a)W4.4,'(s43: ,rnr -- show root name registry%0a" "(l2:y7:verbose;y2:on;),@(y11:sexp-match?)[02}?{t@!(y9:*verbose*)]5}${."
")W4.4,'(s48: ,rnr <name> -- lookup name in root registry%0a)W4.4,'(" "3^,'(l2:y7:verbose;y3:off;),@(y11:sexp-match?)[02}?{f@!(y9:*verbose*)]"
"s43: ,unr -- show user name registry%0a)W4.4,'(s48: ,unr <na" "5}${.3^,'(l1:y4:help;),@(y11:sexp-match?)[02}?{.4,'(s20:Available comm"
"me> -- lookup name in user registry%0a)W4.4,'(s29: ,help -" "ands:%0a)W4.4,'(s42: ,say hello -- displays nice greeting%0a)W4.4,"
"- this help%0a)W4]5}.4,'(s29:syntax error in repl command%0a)W4.4,'(s3" "'(s40: ,peek <fname> -- check if file exists%0a)W4.4,'(s37: ,verbose "
"7:type ,help to see available commands%0a)W4]5", "on -- turn verbosity on%0a)W4.4,'(s38: ,verbose off -- turn verbo"
"sity off%0a)W4.4,'(s54: ,ref <name> -- show current denotation for "
"<name>%0a)W4.4,'(s43: ,rnr -- show root name registry%0a)W4."
"4,'(s48: ,rref <name> -- lookup name in root registry%0a)W4.4,'(s50:"
" ,rrem! <name> -- remove name from root registry%0a)W4.4,'(s43: ,unr "
" -- show user name registry%0a)W4.4,'(s48: ,uref <name> -- "
"lookup name in user registry%0a)W4.4,'(s50: ,urem! <name> -- remove n"
"ame from user registry%0a)W4.4,'(s29: ,help -- this help%0a)W"
"4]5}.4,'(s29:syntax error in repl command%0a)W4.4,'(s37:type ,help to "
"see available commands%0a)W4]5",
"P", "repl-from-port", "P", "repl-from-port",
"%3,#0${@(y18:current-file-stack)[00}.!0${k0,.0,${.2,.9,.(i11),.(i10),&" "%3,#0${@(y18:current-file-stack)[00}.!0${k0,.0,${.2,.9,.(i11),.(i10),&"