t.scm info for building standard lib envs

This commit is contained in:
ESL 2024-05-29 17:01:28 -04:00
parent abb022005b
commit 639a2d54bd
2 changed files with 309 additions and 0 deletions

155
src/t.scm
View file

@ -1194,6 +1194,161 @@
(env-lookup id *root-environment* at))
; standard library environments
(define *std-lib->env* '())
(for-each
(lambda (r)
(define (key->lib k)
(case k
[(w) '(scheme write)]
[(t) '(scheme time)]
[(p) '(scheme repl)]
[(r) '(scheme read)]
[(v) '(scheme r5rs)]
[(u) '(scheme r5rs-null)]
[(s) '(scheme process-context)]
[(d) '(scheme load)]
[(z) '(scheme lazy)]
[(i) '(scheme inexact)]
[(f) '(scheme file)]
[(e) '(scheme eval)]
[(x) '(scheme cxr)]
[(o) '(scheme complex)]
[(h) '(scheme char)]
[(l) '(scheme case-lambda)]
[(b) '(scheme base)]))
(define (put-loc! env k loc)
(let* ([n (vector-length env)] [i (immediate-hash k n)]
[al (vector-ref env i)] [p (assq k al)])
(cond [p (set-cdr! p loc)]
[else (vector-set! env i (cons (cons k loc) al))])))
(define (get-env-vec! lib)
(cond
[(assoc lib *std-lib->env*) => cdr]
[else (let* ([n 37] ; use prime number
[env (make-vector n '())])
(set! *std-lib->env* (cons (cons lib env) *std-lib->env*))
env)]))
(let loop ([name (car r)] [keys (cdr r)])
(unless (null? keys)
(put-loc! (get-env-vec! (key->lib (car keys))) name (root-environment name 'ref))
(loop name (cdr keys)))))
'((* v b) (+ v b) (- v b) (... v u b) (/ v b) (< v b)
(<= v b) (= v b) (=> v u b) (> v b) (>= v b) (_ b) (abs v b)
(and v u b) (append v b) (apply v b) (assoc v b) (assq v b)
(assv v b) (begin v u b) (binary-port? b) (boolean=? b)
(boolean? v b) (bytevector b) (bytevector-append b)
(bytevector-copy b) (bytevector-copy! b)
(bytevector-length b) (bytevector-u8-ref b)
(bytevector-u8-set! b) (bytevector? b) (caar v b) (cadr v b)
(call-with-current-continuation v b) (call-with-port b)
(call-with-values v b) (call/cc b) (car v b) (case v u b)
(cdar v b) (cddr v b) (cdr v b) (ceiling v b)
(char->integer v b) (char-ready? v b) (char<=? v b)
(char<? v b) (char=? v b) (char>=? v b) (char>? v b)
(char? b) (close-input-port v b) (close-output-port v b)
(close-port b) (complex? v b) (cond v u b) (cond-expand b)
(cons v b) (current-error-port b) (current-input-port v b)
(current-output-port v b) (define v u b)
(define-record-type b) (define-syntax v u b)
(define-values b) (denominator v b) (do v u b)
(dynamic-wind v b) (else v u b) (eof-object b)
(eof-object? v b) (eq? v b) (equal? v b) (eqv? v b)
(error b) (error-object-irritants b)
(error-object-message b) (error-object? b) (even? v b)
(exact b) (exact-integer-sqrt b) (exact-integer? b)
(exact? v b) (expt v b) (features b) (file-error? b)
(floor v b) (floor-quotient b) (floor-remainder b)
(floor/ b) (flush-output-port b) (for-each v b) (gcd v b)
(get-output-bytevector b) (get-output-string b) (guard b)
(if v u b) (include b) (include-ci b) (inexact b)
(inexact? v b) (input-port-open? b) (input-port? v b)
(integer->char v b) (integer? v b) (lambda v u b) (lcm v b)
(length v b) (let v u b) (let* v u b) (let*-values b)
(let-syntax v u b) (let-values b) (letrec v u b) (letrec* b)
(letrec-syntax v u b) (list v b) (list->string v b)
(list->vector v b) (list-copy b) (list-ref v b)
(list-set! b) (list-tail v b) (list? v b)
(make-bytevector b) (make-list b) (make-parameter b)
(make-string v b) (make-vector v b) (map v b) (max v b)
(member v b) (memq v b) (memv v b) (min v b) (modulo v b)
(negative? v b) (newline v b) (not v b) (null? v b)
(number->string v b) (number? v b) (numerator v b)
(odd? v b) (open-input-bytevector b) (open-input-string b)
(open-output-bytevector b) (open-output-string b) (or v u b)
(output-port-open? b) (output-port? v b) (pair? v b)
(parameterize b) (peek-char v b) (peek-u8 b) (port? b)
(positive? v b) (procedure? v b) (quasiquote v u b)
(quote v u b) (quotient v b) (raise b) (raise-continuable b)
(rational? v b) (rationalize v b) (read-bytevector b)
(read-bytevector! b) (read-char v b) (read-error? b)
(read-line b) (read-string b) (read-u8 b) (real? v b)
(remainder v b) (reverse v b) (round v b) (set! v b)
(set-car! v b) (set-cdr! v b) (square b) (string v b)
(string->list v b) (string->number v b) (string->symbol v b)
(string->utf8 b) (string->vector b) (string-append v b)
(string-copy v b) (string-copy! b) (string-fill! v b)
(string-for-each b) (string-length v b) (string-map b)
(string-ref v b) (string-set! v b) (string<=? v b)
(string<? v b) (string=? v b) (string>=? v b) (string>? v b)
(string? v b) (substring v b) (symbol->string v b)
(symbol=? b) (symbol? v b) (syntax-error b)
(syntax-rules v u b) (textual-port? b) (truncate v b)
(truncate-quotient b) (truncate-remainder b) (truncate/ b)
(u8-ready? b) (unless b) (unquote v u b)
(unquote-splicing v u b) (utf8->string b) (values v b)
(vector v b) (vector->list v b) (vector->string b)
(vector-append b) (vector-copy b) (vector-copy! b)
(vector-fill! v b) (vector-for-each b) (vector-length v b)
(vector-map b) (vector-ref v b) (vector-set! v b)
(vector? v b) (when b) (with-exception-handler b)
(write-bytevector b) (write-char v b) (write-string b)
(write-u8 b) (zero? v b) (case-lambda l)
(char-alphabetic? v h) (char-ci<=? v h) (char-ci<? v h)
(char-ci=? v h) (char-ci>=? v h) (char-ci>? v h)
(char-downcase v h) (char-foldcase h) (char-lower-case? v h)
(char-numeric? v h) (char-upcase v h) (char-upper-case? v h)
(char-whitespace? v h) (digit-value h) (string-ci<=? v h)
(string-ci<? v h) (string-ci=? v h) (string-ci>=? v h)
(string-ci>? v h) (string-downcase h) (string-foldcase h)
(string-upcase h) (angle v o) (imag-part v o)
(magnitude v o) (make-polar v o) (make-rectangular v o)
(real-part v o) (caaar v x) (caadr v x) (cadar v x)
(caddr v x) (cdaar v x) (cdadr v x) (cddar v x) (cdddr v x)
(caaaar v x) (caaadr v x) (caadar v x) (caaddr v x)
(cadaar v x) (cadadr v x) (caddar v x) (cadddr v x)
(cdaaar v x) (cdaadr v x) (cdadar v x) (cdaddr v x)
(cddaar v x) (cddadr v x) (cdddar v x) (cddddr v x)
(environment e) (eval v e) (call-with-input-file v f)
(call-with-output-file v f) (delete-file f) (file-exists? f)
(open-binary-input-file f) (open-binary-output-file f)
(open-input-file v f) (open-output-file v f)
(with-input-from-file v f) (with-output-to-file v f)
(acos v z i) (asin v z i) (atan v z i) (cos v z i)
(exp v z i) (finite? z i) (infinite? i) (log v i) (nan? i)
(sin v i) (sqrt v i) (tan v i) (delay v u z) (delay-force z)
(force v z) (make-promise z) (promise? z) (load v d)
(command-line s) (emergency-exit s) (exit s)
(get-environment-variable s) (get-environment-variables s)
(display w v) (exact->inexact v) (inexact->exact v)
(interaction-environment p v) (null-environment v)
(read r v) (scheme-report-environment v) (write w v)
(current-jiffy t) (current-second t) (jiffies-per-second t)
(write-shared w) (write-simple w)))
(define (std-lib->env lib)
(cond [(assoc lib *std-lib->env*) =>
(lambda (lv)
(let* ([v (cdr lv)] [n (vector-length v)])
(lambda (id at)
(and (eq? at 'ref)
(let* ([i (immediate-hash id n)] [al (vector-ref v i)] [p (assq id al)])
(if p (cdr p) #f))))))]
[else #f]))
;---------------------------------------------------------------------------------------------
; Evaluation
;---------------------------------------------------------------------------------------------

154
t.c
View file

@ -570,6 +570,160 @@ char *t_code[] = {
"P", "root-environment",
"%2.1,@(y18:*root-environment*),.2,@(y10:env-lookup)[23",
"C", 0,
"n@!(y14:*std-lib->env*)",
"C", 0,
"${'(l339:l3:y1:*;y1:v;y1:b;;l3:y1:+;y1:v;y1:b;;l3:y1:-;y1:v;y1:b;;l4:y"
"3:...;y1:v;y1:u;y1:b;;l3:y1:/;y1:v;y1:b;;l3:y1:<;y1:v;y1:b;;l3:y2:<=;y"
"1:v;y1:b;;l3:y1:=;y1:v;y1:b;;l4:y2:=>;y1:v;y1:u;y1:b;;l3:y1:>;y1:v;y1:"
"b;;l3:y2:>=;y1:v;y1:b;;l2:y1:_;y1:b;;l3:y3:abs;y1:v;y1:b;;l4:y3:and;y1"
":v;y1:u;y1:b;;l3:y6:append;y1:v;y1:b;;l3:y5:apply;y1:v;y1:b;;l3:y5:ass"
"oc;y1:v;y1:b;;l3:y4:assq;y1:v;y1:b;;l3:y4:assv;y1:v;y1:b;;l4:y5:begin;"
"y1:v;y1:u;y1:b;;l2:y12:binary-port?;y1:b;;l2:y9:boolean=?;y1:b;;l3:y8:"
"boolean?;y1:v;y1:b;;l2:y10:bytevector;y1:b;;l2:y17:bytevector-append;y"
"1:b;;l2:y15:bytevector-copy;y1:b;;l2:y16:bytevector-copy!;y1:b;;l2:y17"
":bytevector-length;y1:b;;l2:y17:bytevector-u8-ref;y1:b;;l2:y18:bytevec"
"tor-u8-set!;y1:b;;l2:y11:bytevector?;y1:b;;l3:y4:caar;y1:v;y1:b;;l3:y4"
":cadr;y1:v;y1:b;;l3:y30:call-with-current-continuation;y1:v;y1:b;;l2:y"
"14:call-with-port;y1:b;;l3:y16:call-with-values;y1:v;y1:b;;l2:y7:call/"
"cc;y1:b;;l3:y3:car;y1:v;y1:b;;l4:y4:case;y1:v;y1:u;y1:b;;l3:y4:cdar;y1"
":v;y1:b;;l3:y4:cddr;y1:v;y1:b;;l3:y3:cdr;y1:v;y1:b;;l3:y7:ceiling;y1:v"
";y1:b;;l3:y13:char->integer;y1:v;y1:b;;l3:y11:char-ready?;y1:v;y1:b;;l"
"3:y7:char<=?;y1:v;y1:b;;l3:y6:char<?;y1:v;y1:b;;l3:y6:char=?;y1:v;y1:b"
";;l3:y7:char>=?;y1:v;y1:b;;l3:y6:char>?;y1:v;y1:b;;l2:y5:char?;y1:b;;l"
"3:y16:close-input-port;y1:v;y1:b;;l3:y17:close-output-port;y1:v;y1:b;;"
"l2:y10:close-port;y1:b;;l3:y8:complex?;y1:v;y1:b;;l4:y4:cond;y1:v;y1:u"
";y1:b;;l2:y11:cond-expand;y1:b;;l3:y4:cons;y1:v;y1:b;;l2:y18:current-e"
"rror-port;y1:b;;l3:y18:current-input-port;y1:v;y1:b;;l3:y19:current-ou"
"tput-port;y1:v;y1:b;;l4:y6:define;y1:v;y1:u;y1:b;;l2:y18:define-record"
"-type;y1:b;;l4:y13:define-syntax;y1:v;y1:u;y1:b;;l2:y13:define-values;"
"y1:b;;l3:y11:denominator;y1:v;y1:b;;l4:y2:do;y1:v;y1:u;y1:b;;l3:y12:dy"
"namic-wind;y1:v;y1:b;;l4:y4:else;y1:v;y1:u;y1:b;;l2:y10:eof-object;y1:"
"b;;l3:y11:eof-object?;y1:v;y1:b;;l3:y3:eq?;y1:v;y1:b;;l3:y6:equal?;y1:"
"v;y1:b;;l3:y4:eqv?;y1:v;y1:b;;l2:y5:error;y1:b;;l2:y22:error-object-ir"
"ritants;y1:b;;l2:y20:error-object-message;y1:b;;l2:y13:error-object?;y"
"1:b;;l3:y5:even?;y1:v;y1:b;;l2:y5:exact;y1:b;;l2:y18:exact-integer-sqr"
"t;y1:b;;l2:y14:exact-integer?;y1:b;;l3:y6:exact?;y1:v;y1:b;;l3:y4:expt"
";y1:v;y1:b;;l2:y8:features;y1:b;;l2:y11:file-error?;y1:b;;l3:y5:floor;"
"y1:v;y1:b;;l2:y14:floor-quotient;y1:b;;l2:y15:floor-remainder;y1:b;;l2"
":y6:floor/;y1:b;;l2:y17:flush-output-port;y1:b;;l3:y8:for-each;y1:v;y1"
":b;;l3:y3:gcd;y1:v;y1:b;;l2:y21:get-output-bytevector;y1:b;;l2:y17:get"
"-output-string;y1:b;;l2:y5:guard;y1:b;;l4:y2:if;y1:v;y1:u;y1:b;;l2:y7:"
"include;y1:b;;l2:y10:include-ci;y1:b;;l2:y7:inexact;y1:b;;l3:y8:inexac"
"t?;y1:v;y1:b;;l2:y16:input-port-open?;y1:b;;l3:y11:input-port?;y1:v;y1"
":b;;l3:y13:integer->char;y1:v;y1:b;;l3:y8:integer?;y1:v;y1:b;;l4:y6:la"
"mbda;y1:v;y1:u;y1:b;;l3:y3:lcm;y1:v;y1:b;;l3:y6:length;y1:v;y1:b;;l4:y"
"3:let;y1:v;y1:u;y1:b;;l4:y4:let*;y1:v;y1:u;y1:b;;l2:y11:let*-values;y1"
":b;;l4:y10:let-syntax;y1:v;y1:u;y1:b;;l2:y10:let-values;y1:b;;l4:y6:le"
"trec;y1:v;y1:u;y1:b;;l2:y7:letrec*;y1:b;;l4:y13:letrec-syntax;y1:v;y1:"
"u;y1:b;;l3:y4:list;y1:v;y1:b;;l3:y12:list->string;y1:v;y1:b;;l3:y12:li"
"st->vector;y1:v;y1:b;;l2:y9:list-copy;y1:b;;l3:y8:list-ref;y1:v;y1:b;;"
"l2:y9:list-set!;y1:b;;l3:y9:list-tail;y1:v;y1:b;;l3:y5:list?;y1:v;y1:b"
";;l2:y15:make-bytevector;y1:b;;l2:y9:make-list;y1:b;;l2:y14:make-param"
"eter;y1:b;;l3:y11:make-string;y1:v;y1:b;;l3:y11:make-vector;y1:v;y1:b;"
";l3:y3:map;y1:v;y1:b;;l3:y3:max;y1:v;y1:b;;l3:y6:member;y1:v;y1:b;;l3:"
"y4:memq;y1:v;y1:b;;l3:y4:memv;y1:v;y1:b;;l3:y3:min;y1:v;y1:b;;l3:y6:mo"
"dulo;y1:v;y1:b;;l3:y9:negative?;y1:v;y1:b;;l3:y7:newline;y1:v;y1:b;;l3"
":y3:not;y1:v;y1:b;;l3:y5:null?;y1:v;y1:b;;l3:y14:number->string;y1:v;y"
"1:b;;l3:y7:number?;y1:v;y1:b;;l3:y9:numerator;y1:v;y1:b;;l3:y4:odd?;y1"
":v;y1:b;;l2:y21:open-input-bytevector;y1:b;;l2:y17:open-input-string;y"
"1:b;;l2:y22:open-output-bytevector;y1:b;;l2:y18:open-output-string;y1:"
"b;;l4:y2:or;y1:v;y1:u;y1:b;;l2:y17:output-port-open?;y1:b;;l3:y12:outp"
"ut-port?;y1:v;y1:b;;l3:y5:pair?;y1:v;y1:b;;l2:y12:parameterize;y1:b;;l"
"3:y9:peek-char;y1:v;y1:b;;l2:y7:peek-u8;y1:b;;l2:y5:port?;y1:b;;l3:y9:"
"positive?;y1:v;y1:b;;l3:y10:procedure?;y1:v;y1:b;;l4:y10:quasiquote;y1"
":v;y1:u;y1:b;;l4:y5:quote;y1:v;y1:u;y1:b;;l3:y8:quotient;y1:v;y1:b;;l2"
":y5:raise;y1:b;;l2:y17:raise-continuable;y1:b;;l3:y9:rational?;y1:v;y1"
":b;;l3:y11:rationalize;y1:v;y1:b;;l2:y15:read-bytevector;y1:b;;l2:y16:"
"read-bytevector!;y1:b;;l3:y9:read-char;y1:v;y1:b;;l2:y11:read-error?;y"
"1:b;;l2:y9:read-line;y1:b;;l2:y11:read-string;y1:b;;l2:y7:read-u8;y1:b"
";;l3:y5:real?;y1:v;y1:b;;l3:y9:remainder;y1:v;y1:b;;l3:y7:reverse;y1:v"
";y1:b;;l3:y5:round;y1:v;y1:b;;l3:y4:set!;y1:v;y1:b;;l3:y8:set-car!;y1:"
"v;y1:b;;l3:y8:set-cdr!;y1:v;y1:b;;l2:y6:square;y1:b;;l3:y6:string;y1:v"
";y1:b;;l3:y12:string->list;y1:v;y1:b;;l3:y14:string->number;y1:v;y1:b;"
";l3:y14:string->symbol;y1:v;y1:b;;l2:y12:string->utf8;y1:b;;l2:y14:str"
"ing->vector;y1:b;;l3:y13:string-append;y1:v;y1:b;;l3:y11:string-copy;y"
"1:v;y1:b;;l2:y12:string-copy!;y1:b;;l3:y12:string-fill!;y1:v;y1:b;;l2:"
"y15:string-for-each;y1:b;;l3:y13:string-length;y1:v;y1:b;;l2:y10:strin"
"g-map;y1:b;;l3:y10:string-ref;y1:v;y1:b;;l3:y11:string-set!;y1:v;y1:b;"
";l3:y9:string<=?;y1:v;y1:b;;l3:y8:string<?;y1:v;y1:b;;l3:y8:string=?;y"
"1:v;y1:b;;l3:y9:string>=?;y1:v;y1:b;;l3:y8:string>?;y1:v;y1:b;;l3:y7:s"
"tring?;y1:v;y1:b;;l3:y9:substring;y1:v;y1:b;;l3:y14:symbol->string;y1:"
"v;y1:b;;l2:y8:symbol=?;y1:b;;l3:y7:symbol?;y1:v;y1:b;;l2:y12:syntax-er"
"ror;y1:b;;l4:y12:syntax-rules;y1:v;y1:u;y1:b;;l2:y13:textual-port?;y1:"
"b;;l3:y8:truncate;y1:v;y1:b;;l2:y17:truncate-quotient;y1:b;;l2:y18:tru"
"ncate-remainder;y1:b;;l2:y9:truncate/;y1:b;;l2:y9:u8-ready?;y1:b;;l2:y"
"6:unless;y1:b;;l4:y7:unquote;y1:v;y1:u;y1:b;;l4:y16:unquote-splicing;y"
"1:v;y1:u;y1:b;;l2:y12:utf8->string;y1:b;;l3:y6:values;y1:v;y1:b;;l3:y6"
":vector;y1:v;y1:b;;l3:y12:vector->list;y1:v;y1:b;;l2:y14:vector->strin"
"g;y1:b;;l2:y13:vector-append;y1:b;;l2:y11:vector-copy;y1:b;;l2:y12:vec"
"tor-copy!;y1:b;;l3:y12:vector-fill!;y1:v;y1:b;;l2:y15:vector-for-each;"
"y1:b;;l3:y13:vector-length;y1:v;y1:b;;l2:y10:vector-map;y1:b;;l3:y10:v"
"ector-ref;y1:v;y1:b;;l3:y11:vector-set!;y1:v;y1:b;;l3:y7:vector?;y1:v;"
"y1:b;;l2:y4:when;y1:b;;l2:y22:with-exception-handler;y1:b;;l2:y16:writ"
"e-bytevector;y1:b;;l3:y10:write-char;y1:v;y1:b;;l2:y12:write-string;y1"
":b;;l2:y8:write-u8;y1:b;;l3:y5:zero?;y1:v;y1:b;;l2:y11:case-lambda;y1:"
"l;;l3:y16:char-alphabetic?;y1:v;y1:h;;l3:y10:char-ci<=?;y1:v;y1:h;;l3:"
"y9:char-ci<?;y1:v;y1:h;;l3:y9:char-ci=?;y1:v;y1:h;;l3:y10:char-ci>=?;y"
"1:v;y1:h;;l3:y9:char-ci>?;y1:v;y1:h;;l3:y13:char-downcase;y1:v;y1:h;;l"
"2:y13:char-foldcase;y1:h;;l3:y16:char-lower-case?;y1:v;y1:h;;l3:y13:ch"
"ar-numeric?;y1:v;y1:h;;l3:y11:char-upcase;y1:v;y1:h;;l3:y16:char-upper"
"-case?;y1:v;y1:h;;l3:y16:char-whitespace?;y1:v;y1:h;;l2:y11:digit-valu"
"e;y1:h;;l3:y12:string-ci<=?;y1:v;y1:h;;l3:y11:string-ci<?;y1:v;y1:h;;l"
"3:y11:string-ci=?;y1:v;y1:h;;l3:y12:string-ci>=?;y1:v;y1:h;;l3:y11:str"
"ing-ci>?;y1:v;y1:h;;l2:y15:string-downcase;y1:h;;l2:y15:string-foldcas"
"e;y1:h;;l2:y13:string-upcase;y1:h;;l3:y5:angle;y1:v;y1:o;;l3:y9:imag-p"
"art;y1:v;y1:o;;l3:y9:magnitude;y1:v;y1:o;;l3:y10:make-polar;y1:v;y1:o;"
";l3:y16:make-rectangular;y1:v;y1:o;;l3:y9:real-part;y1:v;y1:o;;l3:y5:c"
"aaar;y1:v;y1:x;;l3:y5:caadr;y1:v;y1:x;;l3:y5:cadar;y1:v;y1:x;;l3:y5:ca"
"ddr;y1:v;y1:x;;l3:y5:cdaar;y1:v;y1:x;;l3:y5:cdadr;y1:v;y1:x;;l3:y5:cdd"
"ar;y1:v;y1:x;;l3:y5:cdddr;y1:v;y1:x;;l3:y6:caaaar;y1:v;y1:x;;l3:y6:caa"
"adr;y1:v;y1:x;;l3:y6:caadar;y1:v;y1:x;;l3:y6:caaddr;y1:v;y1:x;;l3:y6:c"
"adaar;y1:v;y1:x;;l3:y6:cadadr;y1:v;y1:x;;l3:y6:caddar;y1:v;y1:x;;l3:y6"
":cadddr;y1:v;y1:x;;l3:y6:cdaaar;y1:v;y1:x;;l3:y6:cdaadr;y1:v;y1:x;;l3:"
"y6:cdadar;y1:v;y1:x;;l3:y6:cdaddr;y1:v;y1:x;;l3:y6:cddaar;y1:v;y1:x;;l"
"3:y6:cddadr;y1:v;y1:x;;l3:y6:cdddar;y1:v;y1:x;;l3:y6:cddddr;y1:v;y1:x;"
";l2:y11:environment;y1:e;;l3:y4:eval;y1:v;y1:e;;l3:y20:call-with-input"
"-file;y1:v;y1:f;;l3:y21:call-with-output-file;y1:v;y1:f;;l2:y11:delete"
"-file;y1:f;;l2:y12:file-exists?;y1:f;;l2:y22:open-binary-input-file;y1"
":f;;l2:y23:open-binary-output-file;y1:f;;l3:y15:open-input-file;y1:v;y"
"1:f;;l3:y16:open-output-file;y1:v;y1:f;;l3:y20:with-input-from-file;y1"
":v;y1:f;;l3:y19:with-output-to-file;y1:v;y1:f;;l4:y4:acos;y1:v;y1:z;y1"
":i;;l4:y4:asin;y1:v;y1:z;y1:i;;l4:y4:atan;y1:v;y1:z;y1:i;;l4:y3:cos;y1"
":v;y1:z;y1:i;;l4:y3:exp;y1:v;y1:z;y1:i;;l3:y7:finite?;y1:z;y1:i;;l2:y9"
":infinite?;y1:i;;l3:y3:log;y1:v;y1:i;;l2:y4:nan?;y1:i;;l3:y3:sin;y1:v;"
"y1:i;;l3:y4:sqrt;y1:v;y1:i;;l3:y3:tan;y1:v;y1:i;;l4:y5:delay;y1:v;y1:u"
";y1:z;;l2:y11:delay-force;y1:z;;l3:y5:force;y1:v;y1:z;;l2:y12:make-pro"
"mise;y1:z;;l2:y8:promise?;y1:z;;l3:y4:load;y1:v;y1:d;;l2:y12:command-l"
"ine;y1:s;;l2:y14:emergency-exit;y1:s;;l2:y4:exit;y1:s;;l2:y24:get-envi"
"ronment-variable;y1:s;;l2:y25:get-environment-variables;y1:s;;l3:y7:di"
"splay;y1:w;y1:v;;l2:y14:exact->inexact;y1:v;;l2:y14:inexact->exact;y1:"
"v;;l3:y23:interaction-environment;y1:p;y1:v;;l2:y16:null-environment;y"
"1:v;;l3:y4:read;y1:r;y1:v;;l2:y25:scheme-report-environment;y1:v;;l3:y"
"5:write;y1:w;y1:v;;l2:y13:current-jiffy;y1:t;;l2:y14:current-second;y1"
":t;;l2:y18:jiffies-per-second;y1:t;;l2:y12:write-shared;y1:w;;l2:y12:w"
"rite-simple;y1:w;;),&0{%1,,,#0#1#2&0{%1.0,'(y1:w),.1v?{'(l2:y6:scheme;"
"y5:write;)]2}'(y1:t),.1v?{'(l2:y6:scheme;y4:time;)]2}'(y1:p),.1v?{'(l2"
":y6:scheme;y4:repl;)]2}'(y1:r),.1v?{'(l2:y6:scheme;y4:read;)]2}'(y1:v)"
",.1v?{'(l2:y6:scheme;y4:r5rs;)]2}'(y1:u),.1v?{'(l2:y6:scheme;y9:r5rs-n"
"ull;)]2}'(y1:s),.1v?{'(l2:y6:scheme;y15:process-context;)]2}'(y1:d),.1"
"v?{'(l2:y6:scheme;y4:load;)]2}'(y1:z),.1v?{'(l2:y6:scheme;y4:lazy;)]2}"
"'(y1:i),.1v?{'(l2:y6:scheme;y7:inexact;)]2}'(y1:f),.1v?{'(l2:y6:scheme"
";y4:file;)]2}'(y1:e),.1v?{'(l2:y6:scheme;y4:eval;)]2}'(y1:x),.1v?{'(l2"
":y6:scheme;y3:cxr;)]2}'(y1:o),.1v?{'(l2:y6:scheme;y7:complex;)]2}'(y1:"
"h),.1v?{'(l2:y6:scheme;y4:char;)]2}'(y1:l),.1v?{'(l2:y6:scheme;y11:cas"
"e-lambda;)]2}'(y1:b),.1v?{'(l2:y6:scheme;y4:base;)]2}]2}.!0&0{%3.0V3,."
"0,.3H2,.0,.3V4,.0,.5A3,.0?{.6,.1sd]7}.1,.7,.7cc,.3,.6V5]7}.!1&0{%1@(y1"
"4:*std-lib->env*),.1A5,.0?{.0d]2}'(i37),n,.1V2,@(y14:*std-lib->env*),."
"1,.5cc@!(y14:*std-lib->env*).0]4}.!2.3d,.4a,,#0.5,.4,.6,.3,&4{%2.1u~?{"
"${${'(y3:ref),.5,@(y16:root-environment)[02},.3,${${.9a,:2^[01},:3^[01"
"},:1^[03}.1d,.1,:0^[22}]2}.!0.0^_1[42},@(y10:%25for-each1)[02}",
"P", "std-lib->env",
"%1@(y14:*std-lib->env*),.1A5,.0?{.0,.0d,.0V3,.1,.1,&2{%2'(y3:ref),.2q?"
"{:0,.1H2,.0,:1V4,.0,.3A3,.0?{.0d]5}f]5}f]2}]5}f]2",
"C", 0,
"f@!(y7:*reset*)",