no consing when getting value from ephemeron table

This commit is contained in:
Yuichi Nishiwaki 2017-04-04 01:25:46 +09:00
parent d776adba34
commit af5acb6c4f
6 changed files with 474 additions and 497 deletions

View File

@ -1,13 +1,10 @@
(define-library (picrin base) (define-library (picrin base)
(export attribute)
(define attribute-table (make-ephemeron-table)) (define attribute-table (make-ephemeron-table))
(define (attribute obj) (define (attribute obj)
(let ((r (attribute-table obj))) (or (attribute-table obj)
(if r (let ((dict (make-dictionary)))
(cdr r) (attribute-table obj dict)
(let ((dict (make-dictionary))) dict))))
(attribute-table obj dict)
dict))))
(export attribute))

View File

@ -42,12 +42,10 @@
(letrec (letrec
((wrap (let ((ephemeron (make-ephemeron-table))) ((wrap (let ((ephemeron (make-ephemeron-table)))
(lambda (var) (lambda (var)
(let ((id (ephemeron var))) (or (ephemeron var)
(if id (let ((id (make-identifier var env)))
(cdr id) (ephemeron var id)
(let ((id (make-identifier var env))) id)))))
(ephemeron var id)
id))))))
(walk (lambda (f form) (walk (lambda (f form)
(cond (cond
((identifier? form) ((identifier? form)
@ -104,12 +102,10 @@
(letrec (letrec
((rename (let ((ephemeron (make-ephemeron-table))) ((rename (let ((ephemeron (make-ephemeron-table)))
(lambda (var) (lambda (var)
(let ((id (ephemeron var))) (or (ephemeron var)
(if id (let ((id (make-identifier var mac-env)))
(cdr id) (ephemeron var id)
(let ((id (make-identifier var mac-env))) id)))))
(ephemeron var id)
id))))))
(compare (lambda (x y) (compare (lambda (x y)
(identifier=? (identifier=?
(make-identifier x use-env) (make-identifier x use-env)
@ -122,34 +118,26 @@
(ephemeron2 (make-ephemeron-table))) (ephemeron2 (make-ephemeron-table)))
(letrec (letrec
((inject (lambda (var1) ((inject (lambda (var1)
(let ((var2 (ephemeron1 var1))) (or (ephemeron1 var1)
(if var2 (let ((var2 (make-identifier var1 use-env)))
(cdr var2) (ephemeron1 var1 var2)
(let ((var2 (make-identifier var1 use-env))) (ephemeron2 var2 var1)
(ephemeron1 var1 var2) var2))))
(ephemeron2 var2 var1)
var2)))))
(rename (let ((ephemeron (make-ephemeron-table))) (rename (let ((ephemeron (make-ephemeron-table)))
(lambda (var) (lambda (var)
(let ((id (ephemeron var))) (or (ephemeron var)
(if id (let ((id (make-identifier var mac-env)))
(cdr id) (ephemeron var id)
(let ((id (make-identifier var mac-env))) id)))))
(ephemeron var id)
id))))))
(flip (lambda (var2) ; unwrap if injected, wrap if not injected (flip (lambda (var2) ; unwrap if injected, wrap if not injected
(let ((var1 (ephemeron2 var2))) (or (ephemeron2 var2)
(if var1 (rename var2))))
(cdr var1)
(rename var2)))))
(walk (lambda (f form) (walk (lambda (f form)
(cond (cond
((identifier? form) ((identifier? form)
(f form)) (f form))
((pair? form) ((pair? form)
(cons (walk f (car form)) (walk f (cdr form)))) (cons (walk f (car form)) (walk f (cdr form))))
((vector? form)
(list->vector (walk f (vector->list form))))
(else (else
form)))) form))))
(compare (lambda (x y) (compare (lambda (x y)

View File

@ -360,12 +360,10 @@
(letrec (letrec
((#,'rename (let ((wm (make-ephemeron-table))) ((#,'rename (let ((wm (make-ephemeron-table)))
(lambda (x) (lambda (x)
(let ((y (wm x))) (or (wm x)
(if y (let ((id (make-identifier x env)))
(cdr y) (wm x id)
(let ((id (make-identifier x env))) id))))))
(wm x id)
id)))))))
(lambda #,'it (lambda #,'it
#,(compile-rules rules)))))) #,(compile-rules rules))))))

View File

@ -5,450 +5,450 @@ static const char boot_rom[][80] = {
"(core#begin (core#define transformer (core#lambda (.f.2252) (core#lambda (.form.", "(core#begin (core#define transformer (core#lambda (.f.2252) (core#lambda (.form.",
"2253 .env.2254) ((core#lambda (.ephemeron1.2255 .ephemeron2.2256) ((core#lambda ", "2253 .env.2254) ((core#lambda (.ephemeron1.2255 .ephemeron2.2256) ((core#lambda ",
"(.wrap.2257 .unwrap.2258 .walk.2259) (core#begin (core#set! .wrap.2257 (core#lam", "(.wrap.2257 .unwrap.2258 .walk.2259) (core#begin (core#set! .wrap.2257 (core#lam",
"bda (.var1.2260) ((core#lambda (.var2.2261) (core#if .var2.2261 (cdr .var2.2261)", "bda (.var1.2260) ((core#lambda (.it.2261) (core#if .it.2261 .it.2261 ((core#lamb",
" ((core#lambda (.var2.2262) (core#begin (.ephemeron1.2255 .var1.2260 .var2.2262)", "da (.it.2262) (core#if .it.2262 .it.2262 #f)) ((core#lambda (.var2.2263) (core#b",
" (core#begin (.ephemeron2.2256 .var2.2262 .var1.2260) .var2.2262))) (make-identi", "egin (.ephemeron1.2255 .var1.2260 .var2.2263) (core#begin (.ephemeron2.2256 .var",
"fier .var1.2260 .env.2254)))) (.ephemeron1.2255 .var1.2260)))) (core#begin (core", "2.2263 .var1.2260) .var2.2263))) (make-identifier .var1.2260 .env.2254))))) (.ep",
"#set! .unwrap.2258 (core#lambda (.var2.2263) ((core#lambda (.var1.2264) (core#if", "hemeron1.2255 .var1.2260)))) (core#begin (core#set! .unwrap.2258 (core#lambda (.",
" .var1.2264 (cdr .var1.2264) .var2.2263)) (.ephemeron2.2256 .var2.2263)))) (core", "var2.2264) ((core#lambda (.it.2265) (core#if .it.2265 .it.2265 ((core#lambda (.i",
"#begin (core#set! .walk.2259 (core#lambda (.f.2265 .form.2266) (core#if (identif", "t.2266) (core#if .it.2266 .it.2266 #f)) .var2.2264))) (.ephemeron2.2256 .var2.22",
"ier? .form.2266) (.f.2265 .form.2266) (core#if (pair? .form.2266) (cons (.walk.2", "64)))) (core#begin (core#set! .walk.2259 (core#lambda (.f.2267 .form.2268) (core",
"259 .f.2265 (car .form.2266)) (.walk.2259 .f.2265 (cdr .form.2266))) (core#if (v", "#if (identifier? .form.2268) (.f.2267 .form.2268) (core#if (pair? .form.2268) (c",
"ector? .form.2266) (list->vector (.walk.2259 .f.2265 (vector->list .form.2266)))", "ons (.walk.2259 .f.2267 (car .form.2268)) (.walk.2259 .f.2267 (cdr .form.2268)))",
" .form.2266))))) ((core#lambda (.form.2267) (.walk.2259 .unwrap.2258 (apply .f.2", " .form.2268)))) ((core#lambda (.form.2269) (.walk.2259 .unwrap.2258 (apply .f.22",
"252 (.walk.2259 .wrap.2257 .form.2267)))) (cdr .form.2253)))))) #undefined #unde", "52 (.walk.2259 .wrap.2257 .form.2269)))) (cdr .form.2253)))))) #undefined #undef",
"fined #undefined)) (make-ephemeron-table) (make-ephemeron-table))))) ((core#lamb", "ined #undefined)) (make-ephemeron-table) (make-ephemeron-table))))) ((core#lambd",
"da () (core#begin (core#define .define-transformer.2268 (core#lambda (.name.2288", "a () (core#begin (core#define .define-transformer.2270 (core#lambda (.name.2290 ",
" .transformer.2289) (add-macro! .name.2288 .transformer.2289))) (core#begin (cor", ".transformer.2291) (add-macro! .name.2290 .transformer.2291))) (core#begin (core",
"e#define .the.2269 (core#lambda (.var.2290) (make-identifier .var.2290 default-e", "#define .the.2271 (core#lambda (.var.2292) (make-identifier .var.2292 default-en",
"nvironment))) (core#begin (core#define .the-core-define.2270 (.the.2269 (core#qu", "vironment))) (core#begin (core#define .the-core-define.2272 (.the.2271 (core#quo",
"ote core#define))) (core#begin (core#define .the-core-lambda.2271 (.the.2269 (co", "te core#define))) (core#begin (core#define .the-core-lambda.2273 (.the.2271 (cor",
"re#quote core#lambda))) (core#begin (core#define .the-core-begin.2272 (.the.2269", "e#quote core#lambda))) (core#begin (core#define .the-core-begin.2274 (.the.2271 ",
" (core#quote core#begin))) (core#begin (core#define .the-core-quote.2273 (.the.2", "(core#quote core#begin))) (core#begin (core#define .the-core-quote.2275 (.the.22",
"269 (core#quote core#quote))) (core#begin (core#define .the-core-set!.2274 (.the", "71 (core#quote core#quote))) (core#begin (core#define .the-core-set!.2276 (.the.",
".2269 (core#quote core#set!))) (core#begin (core#define .the-core-if.2275 (.the.", "2271 (core#quote core#set!))) (core#begin (core#define .the-core-if.2277 (.the.2",
"2269 (core#quote core#if))) (core#begin (core#define .the-core-define-macro.2276", "271 (core#quote core#if))) (core#begin (core#define .the-core-define-macro.2278 ",
" (.the.2269 (core#quote core#define-macro))) (core#begin (core#define .the-defin", "(.the.2271 (core#quote core#define-macro))) (core#begin (core#define .the-define",
"e.2277 (.the.2269 (core#quote define))) (core#begin (core#define .the-lambda.227", ".2279 (.the.2271 (core#quote define))) (core#begin (core#define .the-lambda.2280",
"8 (.the.2269 (core#quote lambda))) (core#begin (core#define .the-begin.2279 (.th", " (.the.2271 (core#quote lambda))) (core#begin (core#define .the-begin.2281 (.the",
"e.2269 (core#quote begin))) (core#begin (core#define .the-quote.2280 (.the.2269 ", ".2271 (core#quote begin))) (core#begin (core#define .the-quote.2282 (.the.2271 (",
"(core#quote quote))) (core#begin (core#define .the-set!.2281 (.the.2269 (core#qu", "core#quote quote))) (core#begin (core#define .the-set!.2283 (.the.2271 (core#quo",
"ote set!))) (core#begin (core#define .the-if.2282 (.the.2269 (core#quote if))) (", "te set!))) (core#begin (core#define .the-if.2284 (.the.2271 (core#quote if))) (c",
"core#begin (core#define .the-define-macro.2283 (.the.2269 (core#quote define-mac", "ore#begin (core#define .the-define-macro.2285 (.the.2271 (core#quote define-macr",
"ro))) (core#begin (.define-transformer.2268 (core#quote quote) (core#lambda (.fo", "o))) (core#begin (.define-transformer.2270 (core#quote quote) (core#lambda (.for",
"rm.2291 .env.2292) (core#if (= (length .form.2291) 2) (cons .the-core-quote.2273", "m.2293 .env.2294) (core#if (= (length .form.2293) 2) (cons .the-core-quote.2275 ",
" (cons (cadr .form.2291) (core#quote ()))) (error \"malformed quote\" .form.2291))", "(cons (cadr .form.2293) (core#quote ()))) (error \"malformed quote\" .form.2293)))",
")) (core#begin (.define-transformer.2268 (core#quote if) (core#lambda (.form.229", ") (core#begin (.define-transformer.2270 (core#quote if) (core#lambda (.form.2295",
"3 .env.2294) ((core#lambda (.len.2295) (core#if (= .len.2295 3) (append .form.22", " .env.2296) ((core#lambda (.len.2297) (core#if (= .len.2297 3) (append .form.229",
"93 (cons (core#quote #undefined) (core#quote ()))) (core#if (= .len.2295 4) (con", "5 (cons (core#quote #undefined) (core#quote ()))) (core#if (= .len.2297 4) (cons",
"s .the-core-if.2275 (cdr .form.2293)) (error \"malformed if\" .form.2293)))) (leng", " .the-core-if.2277 (cdr .form.2295)) (error \"malformed if\" .form.2295)))) (lengt",
"th .form.2293)))) (core#begin (.define-transformer.2268 (core#quote begin) (core", "h .form.2295)))) (core#begin (.define-transformer.2270 (core#quote begin) (core#",
"#lambda (.form.2296 .env.2297) ((core#lambda (.len.2298) (core#if (= .len.2298 1", "lambda (.form.2298 .env.2299) ((core#lambda (.len.2300) (core#if (= .len.2300 1)",
") #undefined (core#if (= .len.2298 2) (cadr .form.2296) (core#if (= .len.2298 3)", " #undefined (core#if (= .len.2300 2) (cadr .form.2298) (core#if (= .len.2300 3) ",
" (cons .the-core-begin.2272 (cdr .form.2296)) (cons .the-core-begin.2272 (cons (", "(cons .the-core-begin.2274 (cdr .form.2298)) (cons .the-core-begin.2274 (cons (c",
"cadr .form.2296) (cons (cons .the-begin.2279 (cddr .form.2296)) (core#quote ()))", "adr .form.2298) (cons (cons .the-begin.2281 (cddr .form.2298)) (core#quote ())))",
")))))) (length .form.2296)))) (core#begin (.define-transformer.2268 (core#quote ", "))))) (length .form.2298)))) (core#begin (.define-transformer.2270 (core#quote s",
"set!) (core#lambda (.form.2299 .env.2300) (core#if (core#if (= (length .form.229", "et!) (core#lambda (.form.2301 .env.2302) (core#if (core#if (= (length .form.2301",
"9) 3) (identifier? (cadr .form.2299)) #f) (cons .the-core-set!.2274 (cdr .form.2", ") 3) (identifier? (cadr .form.2301)) #f) (cons .the-core-set!.2276 (cdr .form.23",
"299)) (error \"malformed set!\" .form.2299)))) (core#begin (core#define .check-for", "01)) (error \"malformed set!\" .form.2301)))) (core#begin (core#define .check-form",
"mal.2284 (core#lambda (.formal.2301) ((core#lambda (.it.2302) (core#if .it.2302 ", "al.2286 (core#lambda (.formal.2303) ((core#lambda (.it.2304) (core#if .it.2304 .",
".it.2302 ((core#lambda (.it.2303) (core#if .it.2303 .it.2303 ((core#lambda (.it.", "it.2304 ((core#lambda (.it.2305) (core#if .it.2305 .it.2305 ((core#lambda (.it.2",
"2304) (core#if .it.2304 .it.2304 #f)) (core#if (pair? .formal.2301) (core#if (id", "306) (core#if .it.2306 .it.2306 #f)) (core#if (pair? .formal.2303) (core#if (ide",
"entifier? (car .formal.2301)) (.check-formal.2284 (cdr .formal.2301)) #f) #f))))", "ntifier? (car .formal.2303)) (.check-formal.2286 (cdr .formal.2303)) #f) #f)))) ",
" (identifier? .formal.2301)))) (null? .formal.2301)))) (core#begin (.define-tran", "(identifier? .formal.2303)))) (null? .formal.2303)))) (core#begin (.define-trans",
"sformer.2268 (core#quote lambda) (core#lambda (.form.2305 .env.2306) (core#if (=", "former.2270 (core#quote lambda) (core#lambda (.form.2307 .env.2308) (core#if (= ",
" (length .form.2305) 1) (error \"malformed lambda\" .form.2305) (core#if (.check-f", "(length .form.2307) 1) (error \"malformed lambda\" .form.2307) (core#if (.check-fo",
"ormal.2284 (cadr .form.2305)) (cons .the-core-lambda.2271 (cons (cadr .form.2305", "rmal.2286 (cadr .form.2307)) (cons .the-core-lambda.2273 (cons (cadr .form.2307)",
") (cons (cons .the-begin.2279 (cddr .form.2305)) (core#quote ())))) (error \"malf", " (cons (cons .the-begin.2281 (cddr .form.2307)) (core#quote ())))) (error \"malfo",
"ormed lambda\" .form.2305))))) (core#begin (.define-transformer.2268 (core#quote ", "rmed lambda\" .form.2307))))) (core#begin (.define-transformer.2270 (core#quote d",
"define) (core#lambda (.form.2307 .env.2308) ((core#lambda (.len.2309) (core#if (", "efine) (core#lambda (.form.2309 .env.2310) ((core#lambda (.len.2311) (core#if (=",
"= .len.2309 1) (error \"malformed define\" .form.2307) ((core#lambda (.formal.2310", " .len.2311 1) (error \"malformed define\" .form.2309) ((core#lambda (.formal.2312)",
") (core#if (identifier? .formal.2310) (core#if (= .len.2309 3) (cons .the-core-d", " (core#if (identifier? .formal.2312) (core#if (= .len.2311 3) (cons .the-core-de",
"efine.2270 (cdr .form.2307)) (error \"malformed define\" .form.2307)) (core#if (pa", "fine.2272 (cdr .form.2309)) (error \"malformed define\" .form.2309)) (core#if (pai",
"ir? .formal.2310) (cons .the-define.2277 (cons (car .formal.2310) (cons (cons .t", "r? .formal.2312) (cons .the-define.2279 (cons (car .formal.2312) (cons (cons .th",
"he-lambda.2278 (cons (cdr .formal.2310) (cddr .form.2307))) (core#quote ())))) (", "e-lambda.2280 (cons (cdr .formal.2312) (cddr .form.2309))) (core#quote ())))) (e",
"error \"define: binding to non-varaible object\" .form.2307)))) (cadr .form.2307))", "rror \"define: binding to non-varaible object\" .form.2309)))) (cadr .form.2309)))",
")) (length .form.2307)))) (core#begin (.define-transformer.2268 (core#quote defi", ") (length .form.2309)))) (core#begin (.define-transformer.2270 (core#quote defin",
"ne-macro) (core#lambda (.form.2311 .env.2312) (core#if (= (length .form.2311) 3)", "e-macro) (core#lambda (.form.2313 .env.2314) (core#if (= (length .form.2313) 3) ",
" (core#if (identifier? (cadr .form.2311)) (cons .the-core-define-macro.2276 (cdr", "(core#if (identifier? (cadr .form.2313)) (cons .the-core-define-macro.2278 (cdr ",
" .form.2311)) (error \"define-macro: binding to non-variable object\" .form.2311))", ".form.2313)) (error \"define-macro: binding to non-variable object\" .form.2313)) ",
" (error \"malformed define-macro\" .form.2311)))) (core#begin (.define-transformer", "(error \"malformed define-macro\" .form.2313)))) (core#begin (.define-transformer.",
".2268 (core#quote syntax-error) (core#lambda (.form.2313 ._.2314) (apply error (", "2270 (core#quote syntax-error) (core#lambda (.form.2315 ._.2316) (apply error (c",
"cdr .form.2313)))) (core#begin #undefined (core#begin (.define-transformer.2268 ", "dr .form.2315)))) (core#begin #undefined (core#begin (.define-transformer.2270 (",
"(core#quote else) (core#lambda ._.2315 (error \"invalid use of auxiliary syntax\" ", "core#quote else) (core#lambda ._.2317 (error \"invalid use of auxiliary syntax\" (",
"(core#quote else)))) (core#begin (.define-transformer.2268 (core#quote =>) (core", "core#quote else)))) (core#begin (.define-transformer.2270 (core#quote =>) (core#",
"#lambda ._.2316 (error \"invalid use of auxiliary syntax\" (core#quote =>)))) (cor", "lambda ._.2318 (error \"invalid use of auxiliary syntax\" (core#quote =>)))) (core",
"e#begin (.define-transformer.2268 (core#quote unquote) (core#lambda ._.2317 (err", "#begin (.define-transformer.2270 (core#quote unquote) (core#lambda ._.2319 (erro",
"or \"invalid use of auxiliary syntax\" (core#quote unquote)))) (core#begin (.defin", "r \"invalid use of auxiliary syntax\" (core#quote unquote)))) (core#begin (.define",
"e-transformer.2268 (core#quote unquote-splicing) (core#lambda ._.2318 (error \"in", "-transformer.2270 (core#quote unquote-splicing) (core#lambda ._.2320 (error \"inv",
"valid use of auxiliary syntax\" (core#quote unquote-splicing)))) (core#begin (.de", "alid use of auxiliary syntax\" (core#quote unquote-splicing)))) (core#begin (.def",
"fine-transformer.2268 (core#quote syntax-unquote) (core#lambda ._.2319 (error \"i", "ine-transformer.2270 (core#quote syntax-unquote) (core#lambda ._.2321 (error \"in",
"nvalid use of auxiliary syntax\" (core#quote syntax-unquote)))) (core#begin (.def", "valid use of auxiliary syntax\" (core#quote syntax-unquote)))) (core#begin (.defi",
"ine-transformer.2268 (core#quote syntax-unquote-splicing) (core#lambda ._.2320 (", "ne-transformer.2270 (core#quote syntax-unquote-splicing) (core#lambda ._.2322 (e",
"error \"invalid use of auxiliary syntax\" (core#quote syntax-unquote-splicing)))) ", "rror \"invalid use of auxiliary syntax\" (core#quote syntax-unquote-splicing)))) (",
"(core#begin (.define-transformer.2268 (core#quote let) (core#lambda (.form.2321 ", "core#begin (.define-transformer.2270 (core#quote let) (core#lambda (.form.2323 .",
".env.2322) (core#if (identifier? (cadr .form.2321)) ((core#lambda (.name.2323 .f", "env.2324) (core#if (identifier? (cadr .form.2323)) ((core#lambda (.name.2325 .fo",
"ormal.2324 .body.2325) (cons (cons .the-lambda.2278 (cons (core#quote ()) (cons ", "rmal.2326 .body.2327) (cons (cons .the-lambda.2280 (cons (core#quote ()) (cons (",
"(cons .the-define.2277 (cons (cons .name.2323 (map car .formal.2324)) .body.2325", "cons .the-define.2279 (cons (cons .name.2325 (map car .formal.2326)) .body.2327)",
")) (cons (cons .name.2323 (map cadr .formal.2324)) (core#quote ()))))) (core#quo", ") (cons (cons .name.2325 (map cadr .formal.2326)) (core#quote ()))))) (core#quot",
"te ()))) (car (cdr .form.2321)) (car (cdr (cdr .form.2321))) (cdr (cdr (cdr .for", "e ()))) (car (cdr .form.2323)) (car (cdr (cdr .form.2323))) (cdr (cdr (cdr .form",
"m.2321)))) ((core#lambda (.formal.2326 .body.2327) (cons (cons .the-lambda.2278 ", ".2323)))) ((core#lambda (.formal.2328 .body.2329) (cons (cons .the-lambda.2280 (",
"(cons (map car .formal.2326) .body.2327)) (map cadr .formal.2326))) (car (cdr .f", "cons (map car .formal.2328) .body.2329)) (map cadr .formal.2328))) (car (cdr .fo",
"orm.2321)) (cdr (cdr .form.2321)))))) (core#begin (.define-transformer.2268 (cor", "rm.2323)) (cdr (cdr .form.2323)))))) (core#begin (.define-transformer.2270 (core",
"e#quote and) (core#lambda (.form.2328 .env.2329) (core#if (null? (cdr .form.2328", "#quote and) (core#lambda (.form.2330 .env.2331) (core#if (null? (cdr .form.2330)",
")) #t (core#if (null? (cddr .form.2328)) (cadr .form.2328) (cons .the-if.2282 (c", ") #t (core#if (null? (cddr .form.2330)) (cadr .form.2330) (cons .the-if.2284 (co",
"ons (cadr .form.2328) (cons (cons (.the.2269 (core#quote and)) (cddr .form.2328)", "ns (cadr .form.2330) (cons (cons (.the.2271 (core#quote and)) (cddr .form.2330))",
") (cons (core#quote #f) (core#quote ()))))))))) (core#begin (.define-transformer", " (cons (core#quote #f) (core#quote ()))))))))) (core#begin (.define-transformer.",
".2268 (core#quote or) (core#lambda (.form.2330 .env.2331) (core#if (null? (cdr .", "2270 (core#quote or) (core#lambda (.form.2332 .env.2333) (core#if (null? (cdr .f",
"form.2330)) #f ((core#lambda (.tmp.2332) (cons (.the.2269 (core#quote let)) (con", "orm.2332)) #f ((core#lambda (.tmp.2334) (cons (.the.2271 (core#quote let)) (cons",
"s (cons (cons .tmp.2332 (cons (cadr .form.2330) (core#quote ()))) (core#quote ()", " (cons (cons .tmp.2334 (cons (cadr .form.2332) (core#quote ()))) (core#quote ())",
")) (cons (cons .the-if.2282 (cons .tmp.2332 (cons .tmp.2332 (cons (cons (.the.22", ") (cons (cons .the-if.2284 (cons .tmp.2334 (cons .tmp.2334 (cons (cons (.the.227",
"69 (core#quote or)) (cddr .form.2330)) (core#quote ()))))) (core#quote ()))))) (", "1 (core#quote or)) (cddr .form.2332)) (core#quote ()))))) (core#quote ()))))) (m",
"make-identifier (core#quote it) .env.2331))))) (core#begin (.define-transformer.", "ake-identifier (core#quote it) .env.2333))))) (core#begin (.define-transformer.2",
"2268 (core#quote cond) (core#lambda (.form.2333 .env.2334) ((core#lambda (.claus", "270 (core#quote cond) (core#lambda (.form.2335 .env.2336) ((core#lambda (.clause",
"es.2335) (core#if (null? .clauses.2335) #undefined ((core#lambda (.clause.2336) ", "s.2337) (core#if (null? .clauses.2337) #undefined ((core#lambda (.clause.2338) (",
"(core#if (core#if (identifier? (car .clause.2336)) (identifier=? (.the.2269 (cor", "core#if (core#if (identifier? (car .clause.2338)) (identifier=? (.the.2271 (core",
"e#quote else)) (make-identifier (car .clause.2336) .env.2334)) #f) (cons .the-be", "#quote else)) (make-identifier (car .clause.2338) .env.2336)) #f) (cons .the-beg",
"gin.2279 (cdr .clause.2336)) (core#if (null? (cdr .clause.2336)) (cons (.the.226", "in.2281 (cdr .clause.2338)) (core#if (null? (cdr .clause.2338)) (cons (.the.2271",
"9 (core#quote or)) (cons (car .clause.2336) (cons (cons (.the.2269 (core#quote c", " (core#quote or)) (cons (car .clause.2338) (cons (cons (.the.2271 (core#quote co",
"ond)) (cdr .clauses.2335)) (core#quote ())))) (core#if (core#if (identifier? (ca", "nd)) (cdr .clauses.2337)) (core#quote ())))) (core#if (core#if (identifier? (cad",
"dr .clause.2336)) (identifier=? (.the.2269 (core#quote =>)) (make-identifier (ca", "r .clause.2338)) (identifier=? (.the.2271 (core#quote =>)) (make-identifier (cad",
"dr .clause.2336) .env.2334)) #f) ((core#lambda (.tmp.2337) (cons (.the.2269 (cor", "r .clause.2338) .env.2336)) #f) ((core#lambda (.tmp.2339) (cons (.the.2271 (core",
"e#quote let)) (cons (cons (cons .tmp.2337 (cons (car .clause.2336) (core#quote (", "#quote let)) (cons (cons (cons .tmp.2339 (cons (car .clause.2338) (core#quote ()",
")))) (core#quote ())) (cons (cons .the-if.2282 (cons .tmp.2337 (cons (cons (cadr", "))) (core#quote ())) (cons (cons .the-if.2284 (cons .tmp.2339 (cons (cons (cadr ",
" (cdr .clause.2336)) (cons .tmp.2337 (core#quote ()))) (cons (cons (.the.2269 (c", "(cdr .clause.2338)) (cons .tmp.2339 (core#quote ()))) (cons (cons (.the.2271 (co",
"ore#quote cond)) (cddr .form.2333)) (core#quote ()))))) (core#quote ()))))) (mak", "re#quote cond)) (cddr .form.2335)) (core#quote ()))))) (core#quote ()))))) (make",
"e-identifier (core#quote tmp) .env.2334)) (cons .the-if.2282 (cons (car .clause.", "-identifier (core#quote tmp) .env.2336)) (cons .the-if.2284 (cons (car .clause.2",
"2336) (cons (cons .the-begin.2279 (cdr .clause.2336)) (cons (cons (.the.2269 (co", "338) (cons (cons .the-begin.2281 (cdr .clause.2338)) (cons (cons (.the.2271 (cor",
"re#quote cond)) (cdr .clauses.2335)) (core#quote ()))))))))) (car .clauses.2335)", "e#quote cond)) (cdr .clauses.2337)) (core#quote ()))))))))) (car .clauses.2337))",
"))) (cdr .form.2333)))) (core#begin (.define-transformer.2268 (core#quote quasiq", ")) (cdr .form.2335)))) (core#begin (.define-transformer.2270 (core#quote quasiqu",
"uote) (core#lambda (.form.2338 .env.2339) (core#begin (core#define .quasiquote?.", "ote) (core#lambda (.form.2340 .env.2341) (core#begin (core#define .quasiquote?.2",
"2340 (core#lambda (.form.2344) (core#if (pair? .form.2344) (core#if (identifier?", "342 (core#lambda (.form.2346) (core#if (pair? .form.2346) (core#if (identifier? ",
" (car .form.2344)) (identifier=? (.the.2269 (core#quote quasiquote)) (make-ident", "(car .form.2346)) (identifier=? (.the.2271 (core#quote quasiquote)) (make-identi",
"ifier (car .form.2344) .env.2339)) #f) #f))) (core#begin (core#define .unquote?.", "fier (car .form.2346) .env.2341)) #f) #f))) (core#begin (core#define .unquote?.2",
"2341 (core#lambda (.form.2345) (core#if (pair? .form.2345) (core#if (identifier?", "343 (core#lambda (.form.2347) (core#if (pair? .form.2347) (core#if (identifier? ",
" (car .form.2345)) (identifier=? (.the.2269 (core#quote unquote)) (make-identifi", "(car .form.2347)) (identifier=? (.the.2271 (core#quote unquote)) (make-identifie",
"er (car .form.2345) .env.2339)) #f) #f))) (core#begin (core#define .unquote-spli", "r (car .form.2347) .env.2341)) #f) #f))) (core#begin (core#define .unquote-splic",
"cing?.2342 (core#lambda (.form.2346) (core#if (pair? .form.2346) (core#if (pair?", "ing?.2344 (core#lambda (.form.2348) (core#if (pair? .form.2348) (core#if (pair? ",
" (car .form.2346)) (core#if (identifier? (caar .form.2346)) (identifier=? (.the.", "(car .form.2348)) (core#if (identifier? (caar .form.2348)) (identifier=? (.the.2",
"2269 (core#quote unquote-splicing)) (make-identifier (caar .form.2346) .env.2339", "271 (core#quote unquote-splicing)) (make-identifier (caar .form.2348) .env.2341)",
")) #f) #f) #f))) (core#begin (core#define .qq.2343 (core#lambda (.depth.2347 .ex", ") #f) #f) #f))) (core#begin (core#define .qq.2345 (core#lambda (.depth.2349 .exp",
"pr.2348) (core#if (.unquote?.2341 .expr.2348) (core#if (= .depth.2347 1) (cadr .", "r.2350) (core#if (.unquote?.2343 .expr.2350) (core#if (= .depth.2349 1) (cadr .e",
"expr.2348) (list (.the.2269 (core#quote list)) (list (.the.2269 (core#quote quot", "xpr.2350) (list (.the.2271 (core#quote list)) (list (.the.2271 (core#quote quote",
"e)) (.the.2269 (core#quote unquote))) (.qq.2343 (- .depth.2347 1) (car (cdr .exp", ")) (.the.2271 (core#quote unquote))) (.qq.2345 (- .depth.2349 1) (car (cdr .expr",
"r.2348))))) (core#if (.unquote-splicing?.2342 .expr.2348) (core#if (= .depth.234", ".2350))))) (core#if (.unquote-splicing?.2344 .expr.2350) (core#if (= .depth.2349",
"7 1) (list (.the.2269 (core#quote append)) (car (cdr (car .expr.2348))) (.qq.234", " 1) (list (.the.2271 (core#quote append)) (car (cdr (car .expr.2350))) (.qq.2345",
"3 .depth.2347 (cdr .expr.2348))) (list (.the.2269 (core#quote cons)) (list (.the", " .depth.2349 (cdr .expr.2350))) (list (.the.2271 (core#quote cons)) (list (.the.",
".2269 (core#quote list)) (list (.the.2269 (core#quote quote)) (.the.2269 (core#q", "2271 (core#quote list)) (list (.the.2271 (core#quote quote)) (.the.2271 (core#qu",
"uote unquote-splicing))) (.qq.2343 (- .depth.2347 1) (car (cdr (car .expr.2348))", "ote unquote-splicing))) (.qq.2345 (- .depth.2349 1) (car (cdr (car .expr.2350)))",
"))) (.qq.2343 .depth.2347 (cdr .expr.2348)))) (core#if (.quasiquote?.2340 .expr.", ")) (.qq.2345 .depth.2349 (cdr .expr.2350)))) (core#if (.quasiquote?.2342 .expr.2",
"2348) (list (.the.2269 (core#quote list)) (list (.the.2269 (core#quote quote)) (", "350) (list (.the.2271 (core#quote list)) (list (.the.2271 (core#quote quote)) (.",
".the.2269 (core#quote quasiquote))) (.qq.2343 (+ .depth.2347 1) (car (cdr .expr.", "the.2271 (core#quote quasiquote))) (.qq.2345 (+ .depth.2349 1) (car (cdr .expr.2",
"2348)))) (core#if (pair? .expr.2348) (list (.the.2269 (core#quote cons)) (.qq.23", "350)))) (core#if (pair? .expr.2350) (list (.the.2271 (core#quote cons)) (.qq.234",
"43 .depth.2347 (car .expr.2348)) (.qq.2343 .depth.2347 (cdr .expr.2348))) (core#", "5 .depth.2349 (car .expr.2350)) (.qq.2345 .depth.2349 (cdr .expr.2350))) (core#i",
"if (vector? .expr.2348) (list (.the.2269 (core#quote list->vector)) (.qq.2343 .d", "f (vector? .expr.2350) (list (.the.2271 (core#quote list->vector)) (.qq.2345 .de",
"epth.2347 (vector->list .expr.2348))) (list (.the.2269 (core#quote quote)) .expr", "pth.2349 (vector->list .expr.2350))) (list (.the.2271 (core#quote quote)) .expr.",
".2348)))))))) ((core#lambda (.x.2349) (.qq.2343 1 .x.2349)) (cadr .form.2338))))", "2350)))))))) ((core#lambda (.x.2351) (.qq.2345 1 .x.2351)) (cadr .form.2340)))))",
")))) (core#begin (.define-transformer.2268 (core#quote let*) (core#lambda (.form", "))) (core#begin (.define-transformer.2270 (core#quote let*) (core#lambda (.form.",
".2350 .env.2351) ((core#lambda (.bindings.2352 .body.2353) (core#if (null? .bind", "2352 .env.2353) ((core#lambda (.bindings.2354 .body.2355) (core#if (null? .bindi",
"ings.2352) (cons (.the.2269 (core#quote let)) (cons (core#quote ()) .body.2353))", "ngs.2354) (cons (.the.2271 (core#quote let)) (cons (core#quote ()) .body.2355)) ",
" (cons (.the.2269 (core#quote let)) (cons (cons (cons (car (car .bindings.2352))", "(cons (.the.2271 (core#quote let)) (cons (cons (cons (car (car .bindings.2354)) ",
" (cdr (car .bindings.2352))) (core#quote ())) (cons (cons (.the.2269 (core#quote", "(cdr (car .bindings.2354))) (core#quote ())) (cons (cons (.the.2271 (core#quote ",
" let*)) (cons (cdr .bindings.2352) .body.2353)) (core#quote ())))))) (car (cdr .", "let*)) (cons (cdr .bindings.2354) .body.2355)) (core#quote ())))))) (car (cdr .f",
"form.2350)) (cdr (cdr .form.2350))))) (core#begin (.define-transformer.2268 (cor", "orm.2352)) (cdr (cdr .form.2352))))) (core#begin (.define-transformer.2270 (core",
"e#quote letrec) (core#lambda (.form.2354 .env.2355) (cons (.the.2269 (core#quote", "#quote letrec) (core#lambda (.form.2356 .env.2357) (cons (.the.2271 (core#quote ",
" letrec*)) (cdr .form.2354)))) (core#begin (.define-transformer.2268 (core#quote", "letrec*)) (cdr .form.2356)))) (core#begin (.define-transformer.2270 (core#quote ",
" letrec*) (core#lambda (.form.2356 .env.2357) ((core#lambda (.bindings.2358 .bod", "letrec*) (core#lambda (.form.2358 .env.2359) ((core#lambda (.bindings.2360 .body",
"y.2359) ((core#lambda (.variables.2360 .initials.2361) (cons (.the.2269 (core#qu", ".2361) ((core#lambda (.variables.2362 .initials.2363) (cons (.the.2271 (core#quo",
"ote let)) (cons .variables.2360 (append .initials.2361 (append .body.2359 (core#", "te let)) (cons .variables.2362 (append .initials.2363 (append .body.2361 (core#q",
"quote ())))))) (map (core#lambda (.v.2362) (cons .v.2362 (cons (core#quote #unde", "uote ())))))) (map (core#lambda (.v.2364) (cons .v.2364 (cons (core#quote #undef",
"fined) (core#quote ())))) (map car .bindings.2358)) (map (core#lambda (.v.2363) ", "ined) (core#quote ())))) (map car .bindings.2360)) (map (core#lambda (.v.2365) (",
"(cons (.the.2269 (core#quote set!)) (append .v.2363 (core#quote ())))) .bindings", "cons (.the.2271 (core#quote set!)) (append .v.2365 (core#quote ())))) .bindings.",
".2358))) (car (cdr .form.2356)) (cdr (cdr .form.2356))))) (core#begin (.define-t", "2360))) (car (cdr .form.2358)) (cdr (cdr .form.2358))))) (core#begin (.define-tr",
"ransformer.2268 (core#quote let-values) (core#lambda (.form.2364 .env.2365) (con", "ansformer.2270 (core#quote let-values) (core#lambda (.form.2366 .env.2367) (cons",
"s (.the.2269 (core#quote let*-values)) (append (cdr .form.2364) (core#quote ()))", " (.the.2271 (core#quote let*-values)) (append (cdr .form.2366) (core#quote ())))",
"))) (core#begin (.define-transformer.2268 (core#quote let*-values) (core#lambda ", ")) (core#begin (.define-transformer.2270 (core#quote let*-values) (core#lambda (",
"(.form.2366 .env.2367) ((core#lambda (.formal.2368 .body.2369) (core#if (null? .", ".form.2368 .env.2369) ((core#lambda (.formal.2370 .body.2371) (core#if (null? .f",
"formal.2368) (cons (.the.2269 (core#quote let)) (cons (core#quote ()) (append .b", "ormal.2370) (cons (.the.2271 (core#quote let)) (cons (core#quote ()) (append .bo",
"ody.2369 (core#quote ())))) (cons (.the.2269 (core#quote call-with-values)) (con", "dy.2371 (core#quote ())))) (cons (.the.2271 (core#quote call-with-values)) (cons",
"s (cons .the-lambda.2278 (cons (core#quote ()) (append (cdr (car .formal.2368)) ", " (cons .the-lambda.2280 (cons (core#quote ()) (append (cdr (car .formal.2370)) (",
"(core#quote ())))) (cons (cons (.the.2269 (core#quote lambda)) (cons (append (ca", "core#quote ())))) (cons (cons (.the.2271 (core#quote lambda)) (cons (append (car",
"r (car .formal.2368)) (core#quote ())) (cons (cons (.the.2269 (core#quote let*-v", " (car .formal.2370)) (core#quote ())) (cons (cons (.the.2271 (core#quote let*-va",
"alues)) (cons (append (cdr .formal.2368) (core#quote ())) (append .body.2369 (co", "lues)) (cons (append (cdr .formal.2370) (core#quote ())) (append .body.2371 (cor",
"re#quote ())))) (core#quote ())))) (core#quote ())))))) (car (cdr .form.2366)) (", "e#quote ())))) (core#quote ())))) (core#quote ())))))) (car (cdr .form.2368)) (c",
"cdr (cdr .form.2366))))) (core#begin (.define-transformer.2268 (core#quote defin", "dr (cdr .form.2368))))) (core#begin (.define-transformer.2270 (core#quote define",
"e-values) (core#lambda (.form.2370 .env.2371) ((core#lambda (.formal.2372 .body.", "-values) (core#lambda (.form.2372 .env.2373) ((core#lambda (.formal.2374 .body.2",
"2373) ((core#lambda (.arguments.2374) (cons .the-begin.2279 (append ((core#lambd", "375) ((core#lambda (.arguments.2376) (cons .the-begin.2281 (append ((core#lambda",
"a () (core#begin (core#define .loop.2375 (core#lambda (.formal.2376) (core#if (p", " () (core#begin (core#define .loop.2377 (core#lambda (.formal.2378) (core#if (pa",
"air? .formal.2376) (cons (cons .the-define.2277 (cons (car .formal.2376) (cons (", "ir? .formal.2378) (cons (cons .the-define.2279 (cons (car .formal.2378) (cons (c",
"core#quote #undefined) (core#quote ())))) (append (.loop.2375 (cdr .formal.2376)", "ore#quote #undefined) (core#quote ())))) (append (.loop.2377 (cdr .formal.2378))",
") (core#quote ()))) (core#if (identifier? .formal.2376) (cons (cons .the-define.", " (core#quote ()))) (core#if (identifier? .formal.2378) (cons (cons .the-define.2",
"2277 (cons .formal.2376 (cons (core#quote #undefined) (core#quote ())))) (core#q", "279 (cons .formal.2378 (cons (core#quote #undefined) (core#quote ())))) (core#qu",
"uote ())) (core#quote ()))))) (.loop.2375 .formal.2372)))) (cons (cons (.the.226", "ote ())) (core#quote ()))))) (.loop.2377 .formal.2374)))) (cons (cons (.the.2271",
"9 (core#quote call-with-values)) (cons (cons .the-lambda.2278 (cons (core#quote ", " (core#quote call-with-values)) (cons (cons .the-lambda.2280 (cons (core#quote (",
"()) (append .body.2373 (core#quote ())))) (cons (cons .the-lambda.2278 (cons .ar", ")) (append .body.2375 (core#quote ())))) (cons (cons .the-lambda.2280 (cons .arg",
"guments.2374 (append ((core#lambda () (core#begin (core#define .loop.2377 (core#", "uments.2376 (append ((core#lambda () (core#begin (core#define .loop.2379 (core#l",
"lambda (.formal.2378 .args.2379) (core#if (pair? .formal.2378) (cons (cons .the-", "ambda (.formal.2380 .args.2381) (core#if (pair? .formal.2380) (cons (cons .the-s",
"set!.2281 (cons (car .formal.2378) (cons (cons (.the.2269 (core#quote car)) (con", "et!.2283 (cons (car .formal.2380) (cons (cons (.the.2271 (core#quote car)) (cons",
"s .args.2379 (core#quote ()))) (core#quote ())))) (append (.loop.2377 (cdr .form", " .args.2381 (core#quote ()))) (core#quote ())))) (append (.loop.2379 (cdr .forma",
"al.2378) (cons (.the.2269 (core#quote cdr)) (cons .args.2379 (core#quote ())))) ", "l.2380) (cons (.the.2271 (core#quote cdr)) (cons .args.2381 (core#quote ())))) (",
"(core#quote ()))) (core#if (identifier? .formal.2378) (cons (cons .the-set!.2281", "core#quote ()))) (core#if (identifier? .formal.2380) (cons (cons .the-set!.2283 ",
" (cons .formal.2378 (cons .args.2379 (core#quote ())))) (core#quote ())) (core#q", "(cons .formal.2380 (cons .args.2381 (core#quote ())))) (core#quote ())) (core#qu",
"uote ()))))) (.loop.2377 .formal.2372 .arguments.2374)))) (core#quote ())))) (co", "ote ()))))) (.loop.2379 .formal.2374 .arguments.2376)))) (core#quote ())))) (cor",
"re#quote ())))) (core#quote ()))))) (make-identifier (core#quote arguments) .env", "e#quote ())))) (core#quote ()))))) (make-identifier (core#quote arguments) .env.",
".2371))) (car (cdr .form.2370)) (cdr (cdr .form.2370))))) (core#begin (.define-t", "2373))) (car (cdr .form.2372)) (cdr (cdr .form.2372))))) (core#begin (.define-tr",
"ransformer.2268 (core#quote do) (core#lambda (.form.2380 .env.2381) ((core#lambd", "ansformer.2270 (core#quote do) (core#lambda (.form.2382 .env.2383) ((core#lambda",
"a (.bindings.2382 .test.2383 .cleanup.2384 .body.2385) ((core#lambda (.loop.2386", " (.bindings.2384 .test.2385 .cleanup.2386 .body.2387) ((core#lambda (.loop.2388)",
") (cons (.the.2269 (core#quote let)) (cons .loop.2386 (cons (map (core#lambda (.", " (cons (.the.2271 (core#quote let)) (cons .loop.2388 (cons (map (core#lambda (.x",
"x.2387) (cons (car .x.2387) (cons (cadr .x.2387) (core#quote ())))) .bindings.23", ".2389) (cons (car .x.2389) (cons (cadr .x.2389) (core#quote ())))) .bindings.238",
"82) (cons (cons .the-if.2282 (cons .test.2383 (cons (cons .the-begin.2279 .clean", "4) (cons (cons .the-if.2284 (cons .test.2385 (cons (cons .the-begin.2281 .cleanu",
"up.2384) (cons (cons .the-begin.2279 (append .body.2385 (cons (cons .loop.2386 (", "p.2386) (cons (cons .the-begin.2281 (append .body.2387 (cons (cons .loop.2388 (m",
"map (core#lambda (.x.2388) (core#if (null? (cdr (cdr .x.2388))) (car .x.2388) (c", "ap (core#lambda (.x.2390) (core#if (null? (cdr (cdr .x.2390))) (car .x.2390) (ca",
"ar (cdr (cdr .x.2388))))) .bindings.2382)) (core#quote ())))) (core#quote ()))))", "r (cdr (cdr .x.2390))))) .bindings.2384)) (core#quote ())))) (core#quote ())))))",
") (core#quote ())))))) (make-identifier (core#quote loop) .env.2381))) (car (cdr", " (core#quote ())))))) (make-identifier (core#quote loop) .env.2383))) (car (cdr ",
" .form.2380)) (car (car (cdr (cdr .form.2380)))) (cdr (car (cdr (cdr .form.2380)", ".form.2382)) (car (car (cdr (cdr .form.2382)))) (cdr (car (cdr (cdr .form.2382))",
"))) (cdr (cdr (cdr .form.2380)))))) (core#begin (.define-transformer.2268 (core#", ")) (cdr (cdr (cdr .form.2382)))))) (core#begin (.define-transformer.2270 (core#q",
"quote when) (core#lambda (.form.2389 .env.2390) ((core#lambda (.test.2391 .body.", "uote when) (core#lambda (.form.2391 .env.2392) ((core#lambda (.test.2393 .body.2",
"2392) (cons .the-if.2282 (cons .test.2391 (cons (cons .the-begin.2279 (append .b", "394) (cons .the-if.2284 (cons .test.2393 (cons (cons .the-begin.2281 (append .bo",
"ody.2392 (core#quote ()))) (cons (core#quote #undefined) (core#quote ())))))) (c", "dy.2394 (core#quote ()))) (cons (core#quote #undefined) (core#quote ())))))) (ca",
"ar (cdr .form.2389)) (cdr (cdr .form.2389))))) (core#begin (.define-transformer.", "r (cdr .form.2391)) (cdr (cdr .form.2391))))) (core#begin (.define-transformer.2",
"2268 (core#quote unless) (core#lambda (.form.2393 .env.2394) ((core#lambda (.tes", "270 (core#quote unless) (core#lambda (.form.2395 .env.2396) ((core#lambda (.test",
"t.2395 .body.2396) (cons .the-if.2282 (cons .test.2395 (cons (core#quote #undefi", ".2397 .body.2398) (cons .the-if.2284 (cons .test.2397 (cons (core#quote #undefin",
"ned) (cons (cons .the-begin.2279 (append .body.2396 (core#quote ()))) (core#quot", "ed) (cons (cons .the-begin.2281 (append .body.2398 (core#quote ()))) (core#quote",
"e ())))))) (car (cdr .form.2393)) (cdr (cdr .form.2393))))) (core#begin (.define", " ())))))) (car (cdr .form.2395)) (cdr (cdr .form.2395))))) (core#begin (.define-",
"-transformer.2268 (core#quote case) (core#lambda (.form.2397 .env.2398) ((core#l", "transformer.2270 (core#quote case) (core#lambda (.form.2399 .env.2400) ((core#la",
"ambda (.key.2399 .clauses.2400) ((core#lambda (.the-key.2401) (cons (.the.2269 (", "mbda (.key.2401 .clauses.2402) ((core#lambda (.the-key.2403) (cons (.the.2271 (c",
"core#quote let)) (cons (cons (cons .the-key.2401 (cons .key.2399 (core#quote ())", "ore#quote let)) (cons (cons (cons .the-key.2403 (cons .key.2401 (core#quote ()))",
")) (core#quote ())) (cons ((core#lambda () (core#begin (core#define .loop.2402 (", ") (core#quote ())) (cons ((core#lambda () (core#begin (core#define .loop.2404 (c",
"core#lambda (.clauses.2403) (core#if (null? .clauses.2403) #undefined ((core#lam", "ore#lambda (.clauses.2405) (core#if (null? .clauses.2405) #undefined ((core#lamb",
"bda (.clause.2404) (cons .the-if.2282 (cons (core#if (core#if (identifier? (car ", "da (.clause.2406) (cons .the-if.2284 (cons (core#if (core#if (identifier? (car .",
".clause.2404)) (identifier=? (.the.2269 (core#quote else)) (make-identifier (car", "clause.2406)) (identifier=? (.the.2271 (core#quote else)) (make-identifier (car ",
" .clause.2404) .env.2398)) #f) #t (cons (.the.2269 (core#quote or)) (append (map", ".clause.2406) .env.2400)) #f) #t (cons (.the.2271 (core#quote or)) (append (map ",
" (core#lambda (.x.2405) (cons (.the.2269 (core#quote eqv?)) (cons .the-key.2401 ", "(core#lambda (.x.2407) (cons (.the.2271 (core#quote eqv?)) (cons .the-key.2403 (",
"(cons (cons .the-quote.2280 (cons .x.2405 (core#quote ()))) (core#quote ()))))) ", "cons (cons .the-quote.2282 (cons .x.2407 (core#quote ()))) (core#quote ()))))) (",
"(car .clause.2404)) (core#quote ())))) (cons (core#if (core#if (identifier? (cad", "car .clause.2406)) (core#quote ())))) (cons (core#if (core#if (identifier? (cadr",
"r .clause.2404)) (identifier=? (.the.2269 (core#quote =>)) (make-identifier (cad", " .clause.2406)) (identifier=? (.the.2271 (core#quote =>)) (make-identifier (cadr",
"r .clause.2404) .env.2398)) #f) (cons (car (cdr (cdr .clause.2404))) (cons .the-", " .clause.2406) .env.2400)) #f) (cons (car (cdr (cdr .clause.2406))) (cons .the-k",
"key.2401 (core#quote ()))) (cons .the-begin.2279 (append (cdr .clause.2404) (cor", "ey.2403 (core#quote ()))) (cons .the-begin.2281 (append (cdr .clause.2406) (core",
"e#quote ())))) (cons (.loop.2402 (cdr .clauses.2403)) (core#quote ())))))) (car ", "#quote ())))) (cons (.loop.2404 (cdr .clauses.2405)) (core#quote ())))))) (car .",
".clauses.2403))))) (.loop.2402 .clauses.2400)))) (core#quote ()))))) (make-ident", "clauses.2405))))) (.loop.2404 .clauses.2402)))) (core#quote ()))))) (make-identi",
"ifier (core#quote key) .env.2398))) (car (cdr .form.2397)) (cdr (cdr .form.2397)", "fier (core#quote key) .env.2400))) (car (cdr .form.2399)) (cdr (cdr .form.2399))",
")))) (core#begin (.define-transformer.2268 (core#quote parameterize) (core#lambd", "))) (core#begin (.define-transformer.2270 (core#quote parameterize) (core#lambda",
"a (.form.2406 .env.2407) ((core#lambda (.formal.2408 .body.2409) (cons (.the.226", " (.form.2408 .env.2409) ((core#lambda (.formal.2410 .body.2411) (cons (.the.2271",
"9 (core#quote with-dynamic-environment)) (cons (cons (.the.2269 (core#quote list", " (core#quote with-dynamic-environment)) (cons (cons (.the.2271 (core#quote list)",
")) (append (map (core#lambda (.x.2410) (cons (.the.2269 (core#quote cons)) (cons", ") (append (map (core#lambda (.x.2412) (cons (.the.2271 (core#quote cons)) (cons ",
" (car .x.2410) (cons (cadr .x.2410) (core#quote ()))))) .formal.2408) (core#quot", "(car .x.2412) (cons (cadr .x.2412) (core#quote ()))))) .formal.2410) (core#quote",
"e ()))) (cons (cons .the-lambda.2278 (cons (core#quote ()) (append .body.2409 (c", " ()))) (cons (cons .the-lambda.2280 (cons (core#quote ()) (append .body.2411 (co",
"ore#quote ())))) (core#quote ()))))) (car (cdr .form.2406)) (cdr (cdr .form.2406", "re#quote ())))) (core#quote ()))))) (car (cdr .form.2408)) (cdr (cdr .form.2408)",
"))))) (core#begin (.define-transformer.2268 (core#quote syntax-quote) (core#lamb", ")))) (core#begin (.define-transformer.2270 (core#quote syntax-quote) (core#lambd",
"da (.form.2411 .env.2412) ((core#lambda (.renames.2413) ((core#lambda (.rename.2", "a (.form.2413 .env.2414) ((core#lambda (.renames.2415) ((core#lambda (.rename.24",
"414 .walk.2415) (core#begin (core#set! .rename.2414 (core#lambda (.var.2416) ((c", "16 .walk.2417) (core#begin (core#set! .rename.2416 (core#lambda (.var.2418) ((co",
"ore#lambda (.x.2417) (core#if .x.2417 (cadr .x.2417) (core#begin (core#set! .ren", "re#lambda (.x.2419) (core#if .x.2419 (cadr .x.2419) (core#begin (core#set! .rena",
"ames.2413 (cons (cons .var.2416 (cons (make-identifier .var.2416 .env.2412) (con", "mes.2415 (cons (cons .var.2418 (cons (make-identifier .var.2418 .env.2414) (cons",
"s (cons (.the.2269 (core#quote make-identifier)) (cons (cons (core#quote quote) ", " (cons (.the.2271 (core#quote make-identifier)) (cons (cons (core#quote quote) (",
"(cons .var.2416 (core#quote ()))) (cons (cons (core#quote quote) (cons .env.2412", "cons .var.2418 (core#quote ()))) (cons (cons (core#quote quote) (cons .env.2414 ",
" (core#quote ()))) (core#quote ())))) (core#quote ())))) .renames.2413)) (.renam", "(core#quote ()))) (core#quote ())))) (core#quote ())))) .renames.2415)) (.rename",
"e.2414 .var.2416)))) (assq .var.2416 .renames.2413)))) (core#begin (core#set! .w", ".2416 .var.2418)))) (assq .var.2418 .renames.2415)))) (core#begin (core#set! .wa",
"alk.2415 (core#lambda (.f.2418 .form.2419) (core#if (identifier? .form.2419) (.f", "lk.2417 (core#lambda (.f.2420 .form.2421) (core#if (identifier? .form.2421) (.f.",
".2418 .form.2419) (core#if (pair? .form.2419) (cons (.the.2269 (core#quote cons)", "2420 .form.2421) (core#if (pair? .form.2421) (cons (.the.2271 (core#quote cons))",
") (cons (cons (core#quote walk) (cons (core#quote f) (cons (cons (core#quote car", " (cons (cons (core#quote walk) (cons (core#quote f) (cons (cons (core#quote car)",
") (cons (core#quote form) (core#quote ()))) (core#quote ())))) (cons (cons (core", " (cons (core#quote form) (core#quote ()))) (core#quote ())))) (cons (cons (core#",
"#quote walk) (cons (core#quote f) (cons (cons (core#quote cdr) (cons (core#quote", "quote walk) (cons (core#quote f) (cons (cons (core#quote cdr) (cons (core#quote ",
" form) (core#quote ()))) (core#quote ())))) (core#quote ())))) (core#if (vector?", "form) (core#quote ()))) (core#quote ())))) (core#quote ())))) (core#if (vector? ",
" .form.2419) (cons (.the.2269 (core#quote list->vector)) (cons (cons (core#quote", ".form.2421) (cons (.the.2271 (core#quote list->vector)) (cons (cons (core#quote ",
" walk) (cons (core#quote f) (cons (cons (core#quote vector->list) (cons (core#qu", "walk) (cons (core#quote f) (cons (cons (core#quote vector->list) (cons (core#quo",
"ote form) (core#quote ()))) (core#quote ())))) (core#quote ()))) (cons (.the.226", "te form) (core#quote ()))) (core#quote ())))) (core#quote ()))) (cons (.the.2271",
"9 (core#quote quote)) (cons .form.2419 (core#quote ())))))))) ((core#lambda (.fo", " (core#quote quote)) (cons .form.2421 (core#quote ())))))))) ((core#lambda (.for",
"rm.2420) (cons (.the.2269 (core#quote let)) (cons (map cdr .renames.2413) (cons ", "m.2422) (cons (.the.2271 (core#quote let)) (cons (map cdr .renames.2415) (cons .",
".form.2420 (core#quote ()))))) (.walk.2415 .rename.2414 (cadr .form.2411)))))) #", "form.2422 (core#quote ()))))) (.walk.2417 .rename.2416 (cadr .form.2413)))))) #u",
"undefined #undefined)) (core#quote ())))) (core#begin (.define-transformer.2268 ", "ndefined #undefined)) (core#quote ())))) (core#begin (.define-transformer.2270 (",
"(core#quote syntax-quasiquote) (core#lambda (.form.2421 .env.2422) ((core#lambda", "core#quote syntax-quasiquote) (core#lambda (.form.2423 .env.2424) ((core#lambda ",
" (.renames.2423) ((core#lambda (.rename.2424) (core#begin (core#set! .rename.242", "(.renames.2425) ((core#lambda (.rename.2426) (core#begin (core#set! .rename.2426",
"4 (core#lambda (.var.2429) ((core#lambda (.x.2430) (core#if .x.2430 (cadr .x.243", " (core#lambda (.var.2431) ((core#lambda (.x.2432) (core#if .x.2432 (cadr .x.2432",
"0) (core#begin (core#set! .renames.2423 (cons (cons .var.2429 (cons (make-identi", ") (core#begin (core#set! .renames.2425 (cons (cons .var.2431 (cons (make-identif",
"fier .var.2429 .env.2422) (cons (cons (.the.2269 (core#quote make-identifier)) (", "ier .var.2431 .env.2424) (cons (cons (.the.2271 (core#quote make-identifier)) (c",
"cons (cons (core#quote quote) (cons .var.2429 (core#quote ()))) (cons (cons (cor", "ons (cons (core#quote quote) (cons .var.2431 (core#quote ()))) (cons (cons (core",
"e#quote quote) (cons .env.2422 (core#quote ()))) (core#quote ())))) (core#quote ", "#quote quote) (cons .env.2424 (core#quote ()))) (core#quote ())))) (core#quote (",
"())))) .renames.2423)) (.rename.2424 .var.2429)))) (assq .var.2429 .renames.2423", "))))) .renames.2425)) (.rename.2426 .var.2431)))) (assq .var.2431 .renames.2425)",
")))) (core#begin (core#define .syntax-quasiquote?.2425 (core#lambda (.form.2431)", "))) (core#begin (core#define .syntax-quasiquote?.2427 (core#lambda (.form.2433) ",
" (core#if (pair? .form.2431) (core#if (identifier? (car .form.2431)) (identifier", "(core#if (pair? .form.2433) (core#if (identifier? (car .form.2433)) (identifier=",
"=? (.the.2269 (core#quote syntax-quasiquote)) (make-identifier (car .form.2431) ", "? (.the.2271 (core#quote syntax-quasiquote)) (make-identifier (car .form.2433) .",
".env.2422)) #f) #f))) (core#begin (core#define .syntax-unquote?.2426 (core#lambd", "env.2424)) #f) #f))) (core#begin (core#define .syntax-unquote?.2428 (core#lambda",
"a (.form.2432) (core#if (pair? .form.2432) (core#if (identifier? (car .form.2432", " (.form.2434) (core#if (pair? .form.2434) (core#if (identifier? (car .form.2434)",
")) (identifier=? (.the.2269 (core#quote syntax-unquote)) (make-identifier (car .", ") (identifier=? (.the.2271 (core#quote syntax-unquote)) (make-identifier (car .f",
"form.2432) .env.2422)) #f) #f))) (core#begin (core#define .syntax-unquote-splici", "orm.2434) .env.2424)) #f) #f))) (core#begin (core#define .syntax-unquote-splicin",
"ng?.2427 (core#lambda (.form.2433) (core#if (pair? .form.2433) (core#if (pair? (", "g?.2429 (core#lambda (.form.2435) (core#if (pair? .form.2435) (core#if (pair? (c",
"car .form.2433)) (core#if (identifier? (caar .form.2433)) (identifier=? (.the.22", "ar .form.2435)) (core#if (identifier? (caar .form.2435)) (identifier=? (.the.227",
"69 (core#quote syntax-unquote-splicing)) (make-identifier (caar .form.2433) .env", "1 (core#quote syntax-unquote-splicing)) (make-identifier (caar .form.2435) .env.",
".2422)) #f) #f) #f))) (core#begin (core#define .qq.2428 (core#lambda (.depth.243", "2424)) #f) #f) #f))) (core#begin (core#define .qq.2430 (core#lambda (.depth.2436",
"4 .expr.2435) (core#if (.syntax-unquote?.2426 .expr.2435) (core#if (= .depth.243", " .expr.2437) (core#if (.syntax-unquote?.2428 .expr.2437) (core#if (= .depth.2436",
"4 1) (car (cdr .expr.2435)) (list (.the.2269 (core#quote list)) (list (.the.2269", " 1) (car (cdr .expr.2437)) (list (.the.2271 (core#quote list)) (list (.the.2271 ",
" (core#quote quote)) (.the.2269 (core#quote syntax-unquote))) (.qq.2428 (- .dept", "(core#quote quote)) (.the.2271 (core#quote syntax-unquote))) (.qq.2430 (- .depth",
"h.2434 1) (car (cdr .expr.2435))))) (core#if (.syntax-unquote-splicing?.2427 .ex", ".2436 1) (car (cdr .expr.2437))))) (core#if (.syntax-unquote-splicing?.2429 .exp",
"pr.2435) (core#if (= .depth.2434 1) (list (.the.2269 (core#quote append)) (car (", "r.2437) (core#if (= .depth.2436 1) (list (.the.2271 (core#quote append)) (car (c",
"cdr (car .expr.2435))) (.qq.2428 .depth.2434 (cdr .expr.2435))) (list (.the.2269", "dr (car .expr.2437))) (.qq.2430 .depth.2436 (cdr .expr.2437))) (list (.the.2271 ",
" (core#quote cons)) (list (.the.2269 (core#quote list)) (list (.the.2269 (core#q", "(core#quote cons)) (list (.the.2271 (core#quote list)) (list (.the.2271 (core#qu",
"uote quote)) (.the.2269 (core#quote syntax-unquote-splicing))) (.qq.2428 (- .dep", "ote quote)) (.the.2271 (core#quote syntax-unquote-splicing))) (.qq.2430 (- .dept",
"th.2434 1) (car (cdr (car .expr.2435))))) (.qq.2428 .depth.2434 (cdr .expr.2435)", "h.2436 1) (car (cdr (car .expr.2437))))) (.qq.2430 .depth.2436 (cdr .expr.2437))",
"))) (core#if (.syntax-quasiquote?.2425 .expr.2435) (list (.the.2269 (core#quote ", ")) (core#if (.syntax-quasiquote?.2427 .expr.2437) (list (.the.2271 (core#quote l",
"list)) (list (.the.2269 (core#quote quote)) (.the.2269 (core#quote quasiquote)))", "ist)) (list (.the.2271 (core#quote quote)) (.the.2271 (core#quote quasiquote))) ",
" (.qq.2428 (+ .depth.2434 1) (car (cdr .expr.2435)))) (core#if (pair? .expr.2435", "(.qq.2430 (+ .depth.2436 1) (car (cdr .expr.2437)))) (core#if (pair? .expr.2437)",
") (list (.the.2269 (core#quote cons)) (.qq.2428 .depth.2434 (car .expr.2435)) (.", " (list (.the.2271 (core#quote cons)) (.qq.2430 .depth.2436 (car .expr.2437)) (.q",
"qq.2428 .depth.2434 (cdr .expr.2435))) (core#if (vector? .expr.2435) (list (.the", "q.2430 .depth.2436 (cdr .expr.2437))) (core#if (vector? .expr.2437) (list (.the.",
".2269 (core#quote list->vector)) (.qq.2428 .depth.2434 (vector->list .expr.2435)", "2271 (core#quote list->vector)) (.qq.2430 .depth.2436 (vector->list .expr.2437))",
")) (core#if (identifier? .expr.2435) (.rename.2424 .expr.2435) (list (.the.2269 ", ") (core#if (identifier? .expr.2437) (.rename.2426 .expr.2437) (list (.the.2271 (",
"(core#quote quote)) .expr.2435))))))))) ((core#lambda (.body.2436) (cons (.the.2", "core#quote quote)) .expr.2437))))))))) ((core#lambda (.body.2438) (cons (.the.22",
"269 (core#quote let)) (cons (map cdr .renames.2423) (cons .body.2436 (core#quote", "71 (core#quote let)) (cons (map cdr .renames.2425) (cons .body.2438 (core#quote ",
" ()))))) (.qq.2428 1 (cadr .form.2421))))))))) #undefined)) (core#quote ())))) (", "()))))) (.qq.2430 1 (cadr .form.2423))))))))) #undefined)) (core#quote ())))) (c",
"core#begin (.define-transformer.2268 (core#quote define-syntax) (core#lambda (.f", "ore#begin (.define-transformer.2270 (core#quote define-syntax) (core#lambda (.fo",
"orm.2437 .env.2438) ((core#lambda (.formal.2439 .body.2440) (core#if (pair? .for", "rm.2439 .env.2440) ((core#lambda (.formal.2441 .body.2442) (core#if (pair? .form",
"mal.2439) (cons (.the.2269 (core#quote define-syntax)) (cons (car .formal.2439) ", "al.2441) (cons (.the.2271 (core#quote define-syntax)) (cons (car .formal.2441) (",
"(cons (cons .the-lambda.2278 (cons (cdr .formal.2439) (append .body.2440 (core#q", "cons (cons .the-lambda.2280 (cons (cdr .formal.2441) (append .body.2442 (core#qu",
"uote ())))) (core#quote ())))) (cons .the-define-macro.2283 (cons .formal.2439 (", "ote ())))) (core#quote ())))) (cons .the-define-macro.2285 (cons .formal.2441 (c",
"cons (cons (.the.2269 (core#quote transformer)) (cons (cons .the-begin.2279 (app", "ons (cons (.the.2271 (core#quote transformer)) (cons (cons .the-begin.2281 (appe",
"end .body.2440 (core#quote ()))) (core#quote ()))) (core#quote ())))))) (car (cd", "nd .body.2442 (core#quote ()))) (core#quote ()))) (core#quote ())))))) (car (cdr",
"r .form.2437)) (cdr (cdr .form.2437))))) (core#begin (.define-transformer.2268 (", " .form.2439)) (cdr (cdr .form.2439))))) (core#begin (.define-transformer.2270 (c",
"core#quote letrec-syntax) (core#lambda (.form.2441 .env.2442) ((core#lambda (.fo", "ore#quote letrec-syntax) (core#lambda (.form.2443 .env.2444) ((core#lambda (.for",
"rmal.2443 .body.2444) (cons (core#quote let) (cons (core#quote ()) (append (map ", "mal.2445 .body.2446) (cons (core#quote let) (cons (core#quote ()) (append (map (",
"(core#lambda (.x.2445) (cons (.the.2269 (core#quote define-syntax)) (cons (car .", "core#lambda (.x.2447) (cons (.the.2271 (core#quote define-syntax)) (cons (car .x",
"x.2445) (cons (cadr .x.2445) (core#quote ()))))) .formal.2443) (append .body.244", ".2447) (cons (cadr .x.2447) (core#quote ()))))) .formal.2445) (append .body.2446",
"4 (core#quote ())))))) (car (cdr .form.2441)) (cdr (cdr .form.2441))))) (.define", " (core#quote ())))))) (car (cdr .form.2443)) (cdr (cdr .form.2443))))) (.define-",
"-transformer.2268 (core#quote let-syntax) (core#lambda (.form.2446 .env.2447) (c", "transformer.2270 (core#quote let-syntax) (core#lambda (.form.2448 .env.2449) (co",
"ons (.the.2269 (core#quote letrec-syntax)) (append (cdr .form.2446) (core#quote ", "ns (.the.2271 (core#quote letrec-syntax)) (append (cdr .form.2448) (core#quote (",
"()))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))", ")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",
}; };
#if PIC_USE_LIBRARY #if PIC_USE_LIBRARY
static const char boot_library_rom[][80] = { static const char boot_library_rom[][80] = {
"(core#begin (core#define mangle (core#lambda (.name.2448) (core#begin (core#if (", "(core#begin (core#define mangle (core#lambda (.name.2450) (core#begin (core#if (",
"null? .name.2448) (error \"library name should be a list of at least one symbols\"", "null? .name.2450) (error \"library name should be a list of at least one symbols\"",
" .name.2448) #undefined) (core#begin (core#define .->string.2449 (core#lambda (.", " .name.2450) #undefined) (core#begin (core#define .->string.2451 (core#lambda (.",
"n.2451) (core#if (symbol? .n.2451) ((core#lambda (.str.2452) (core#begin (string", "n.2453) (core#if (symbol? .n.2453) ((core#lambda (.str.2454) (core#begin (string",
"-for-each (core#lambda (.c.2453) (core#if ((core#lambda (.it.2454) (core#if .it.", "-for-each (core#lambda (.c.2455) (core#if ((core#lambda (.it.2456) (core#if .it.",
"2454 .it.2454 ((core#lambda (.it.2455) (core#if .it.2455 .it.2455 #f)) (char=? .", "2456 .it.2456 ((core#lambda (.it.2457) (core#if .it.2457 .it.2457 #f)) (char=? .",
"c.2453 #\\:)))) (char=? .c.2453 #\\.)) (error \"elements of library name may not co", "c.2455 #\\:)))) (char=? .c.2455 #\\.)) (error \"elements of library name may not co",
"ntain '.' or ':'\" .n.2451) #undefined)) .str.2452) .str.2452)) (symbol->string .", "ntain '.' or ':'\" .n.2453) #undefined)) .str.2454) .str.2454)) (symbol->string .",
"n.2451)) (core#if (core#if (number? .n.2451) (core#if (exact? .n.2451) (<= 0 .n.", "n.2453)) (core#if (core#if (number? .n.2453) (core#if (exact? .n.2453) (<= 0 .n.",
"2451) #f) #f) (number->string .n.2451) (error \"symbol or non-negative integer is", "2453) #f) #f) (number->string .n.2453) (error \"symbol or non-negative integer is",
" required\" .n.2451))))) (core#begin (core#define .join.2450 (core#lambda (.strs.", " required\" .n.2453))))) (core#begin (core#define .join.2452 (core#lambda (.strs.",
"2456 .delim.2457) ((core#lambda () (core#begin (core#define .loop.2458 (core#lam", "2458 .delim.2459) ((core#lambda () (core#begin (core#define .loop.2460 (core#lam",
"bda (.res.2459 .strs.2460) (core#if (null? .strs.2460) .res.2459 (.loop.2458 (st", "bda (.res.2461 .strs.2462) (core#if (null? .strs.2462) .res.2461 (.loop.2460 (st",
"ring-append .res.2459 .delim.2457 (car .strs.2460)) (cdr .strs.2460))))) (.loop.", "ring-append .res.2461 .delim.2459 (car .strs.2462)) (cdr .strs.2462))))) (.loop.",
"2458 (car .strs.2456) (cdr .strs.2456))))))) (core#if (symbol? .name.2448) .name", "2460 (car .strs.2458) (cdr .strs.2458))))))) (core#if (symbol? .name.2450) .name",
".2448 (string->symbol (.join.2450 (map .->string.2449 .name.2448) \".\")))))))) (c", ".2450 (string->symbol (.join.2452 (map .->string.2451 .name.2450) \".\")))))))) (c",
"ore#begin (core#define current-library (make-parameter (core#quote (picrin user)", "ore#begin (core#define current-library (make-parameter (core#quote (picrin user)",
") mangle)) (core#begin (core#define *libraries* (make-dictionary)) (core#begin (", ") mangle)) (core#begin (core#define *libraries* (make-dictionary)) (core#begin (",
"core#define find-library (core#lambda (.name.2461) (dictionary-has? *libraries* ", "core#define find-library (core#lambda (.name.2463) (dictionary-has? *libraries* ",
"(mangle .name.2461)))) (core#begin (core#define make-library (core#lambda (.name", "(mangle .name.2463)))) (core#begin (core#define make-library (core#lambda (.name",
".2462) ((core#lambda (.name.2463) ((core#lambda (.env.2464 .exports.2465) (core#", ".2464) ((core#lambda (.name.2465) ((core#lambda (.env.2466 .exports.2467) (core#",
"begin (set-identifier! (core#quote define-library) (core#quote define-library) .", "begin (set-identifier! (core#quote define-library) (core#quote define-library) .",
"env.2464) (core#begin (set-identifier! (core#quote import) (core#quote import) .", "env.2466) (core#begin (set-identifier! (core#quote import) (core#quote import) .",
"env.2464) (core#begin (set-identifier! (core#quote export) (core#quote export) .", "env.2466) (core#begin (set-identifier! (core#quote export) (core#quote export) .",
"env.2464) (core#begin (set-identifier! (core#quote cond-expand) (core#quote cond", "env.2466) (core#begin (set-identifier! (core#quote cond-expand) (core#quote cond",
"-expand) .env.2464) (dictionary-set! *libraries* .name.2463 (cons .env.2464 .exp", "-expand) .env.2466) (dictionary-set! *libraries* .name.2465 (cons .env.2466 .exp",
"orts.2465))))))) (make-environment (string->symbol (string-append (symbol->strin", "orts.2467))))))) (make-environment (string->symbol (string-append (symbol->strin",
"g .name.2463) \":\"))) (make-dictionary))) (mangle .name.2462)))) (core#begin (cor", "g .name.2465) \":\"))) (make-dictionary))) (mangle .name.2464)))) (core#begin (cor",
"e#define library-environment (core#lambda (.name.2466) (car (dictionary-ref *lib", "e#define library-environment (core#lambda (.name.2468) (car (dictionary-ref *lib",
"raries* (mangle .name.2466))))) (core#begin (core#define library-exports (core#l", "raries* (mangle .name.2468))))) (core#begin (core#define library-exports (core#l",
"ambda (.name.2467) (cdr (dictionary-ref *libraries* (mangle .name.2467))))) (cor", "ambda (.name.2469) (cdr (dictionary-ref *libraries* (mangle .name.2469))))) (cor",
"e#begin (core#define library-import (core#lambda (.name.2468 .sym.2469 .alias.24", "e#begin (core#define library-import (core#lambda (.name.2470 .sym.2471 .alias.24",
"70) ((core#lambda (.uid.2471) ((core#lambda (.env.2472) (set-identifier! .alias.", "72) ((core#lambda (.uid.2473) ((core#lambda (.env.2474) (set-identifier! .alias.",
"2470 .uid.2471 .env.2472)) (library-environment (current-library)))) (dictionary", "2472 .uid.2473 .env.2474)) (library-environment (current-library)))) (dictionary",
"-ref (library-exports .name.2468) .sym.2469)))) (core#begin (core#define library", "-ref (library-exports .name.2470) .sym.2471)))) (core#begin (core#define library",
"-export (core#lambda (.sym.2473 .alias.2474) ((core#lambda (.env.2475 .exports.2", "-export (core#lambda (.sym.2475 .alias.2476) ((core#lambda (.env.2477 .exports.2",
"476) (dictionary-set! .exports.2476 .alias.2474 (find-identifier .sym.2473 .env.", "478) (dictionary-set! .exports.2478 .alias.2476 (find-identifier .sym.2475 .env.",
"2475))) (library-environment (current-library)) (library-exports (current-librar", "2477))) (library-environment (current-library)) (library-exports (current-librar",
"y))))) (core#begin ((core#lambda (.define-transformer.2477) (core#begin (.define", "y))))) (core#begin ((core#lambda (.define-transformer.2479) (core#begin (.define",
"-transformer.2477 (core#quote define-library) (core#lambda (.form.2478 ._.2479) ", "-transformer.2479 (core#quote define-library) (core#lambda (.form.2480 ._.2481) ",
"((core#lambda (.name.2480 .body.2481) (core#begin ((core#lambda (.it.2482) (core", "((core#lambda (.name.2482 .body.2483) (core#begin ((core#lambda (.it.2484) (core",
"#if .it.2482 .it.2482 ((core#lambda (.it.2483) (core#if .it.2483 .it.2483 #f)) (", "#if .it.2484 .it.2484 ((core#lambda (.it.2485) (core#if .it.2485 .it.2485 #f)) (",
"make-library .name.2480)))) (find-library .name.2480)) (with-dynamic-environment", "make-library .name.2482)))) (find-library .name.2482)) (with-dynamic-environment",
" (list (cons current-library .name.2480)) (core#lambda () (for-each (core#lambda", " (list (cons current-library .name.2482)) (core#lambda () (for-each (core#lambda",
" (.expr.2484) (eval .expr.2484 .name.2480)) .body.2481))))) (cadr .form.2478) (c", " (.expr.2486) (eval .expr.2486 .name.2482)) .body.2483))))) (cadr .form.2480) (c",
"ddr .form.2478)))) (core#begin (.define-transformer.2477 (core#quote cond-expand", "ddr .form.2480)))) (core#begin (.define-transformer.2479 (core#quote cond-expand",
") (core#lambda (.form.2485 ._.2486) ((core#lambda (.test.2487) (core#begin (core", ") (core#lambda (.form.2487 ._.2488) ((core#lambda (.test.2489) (core#begin (core",
"#set! .test.2487 (core#lambda (.form.2488) ((core#lambda (.it.2489) (core#if .it", "#set! .test.2489 (core#lambda (.form.2490) ((core#lambda (.it.2491) (core#if .it",
".2489 .it.2489 ((core#lambda (.it.2490) (core#if .it.2490 .it.2490 ((core#lambda", ".2491 .it.2491 ((core#lambda (.it.2492) (core#if .it.2492 .it.2492 ((core#lambda",
" (.it.2491) (core#if .it.2491 .it.2491 #f)) (core#if (pair? .form.2488) ((core#l", " (.it.2493) (core#if .it.2493 .it.2493 #f)) (core#if (pair? .form.2490) ((core#l",
"ambda (.key.2492) (core#if ((core#lambda (.it.2493) (core#if .it.2493 .it.2493 #", "ambda (.key.2494) (core#if ((core#lambda (.it.2495) (core#if .it.2495 .it.2495 #",
"f)) (eqv? .key.2492 (core#quote library))) (find-library (cadr .form.2488)) (cor", "f)) (eqv? .key.2494 (core#quote library))) (find-library (cadr .form.2490)) (cor",
"e#if ((core#lambda (.it.2494) (core#if .it.2494 .it.2494 #f)) (eqv? .key.2492 (c", "e#if ((core#lambda (.it.2496) (core#if .it.2496 .it.2496 #f)) (eqv? .key.2494 (c",
"ore#quote not))) (not (.test.2487 (cadr .form.2488))) (core#if ((core#lambda (.i", "ore#quote not))) (not (.test.2489 (cadr .form.2490))) (core#if ((core#lambda (.i",
"t.2495) (core#if .it.2495 .it.2495 #f)) (eqv? .key.2492 (core#quote and))) ((cor", "t.2497) (core#if .it.2497 .it.2497 #f)) (eqv? .key.2494 (core#quote and))) ((cor",
"e#lambda () (core#begin (core#define .loop.2496 (core#lambda (.form.2497) ((core", "e#lambda () (core#begin (core#define .loop.2498 (core#lambda (.form.2499) ((core",
"#lambda (.it.2498) (core#if .it.2498 .it.2498 ((core#lambda (.it.2499) (core#if ", "#lambda (.it.2500) (core#if .it.2500 .it.2500 ((core#lambda (.it.2501) (core#if ",
".it.2499 .it.2499 #f)) (core#if (.test.2487 (car .form.2497)) (.loop.2496 (cdr .", ".it.2501 .it.2501 #f)) (core#if (.test.2489 (car .form.2499)) (.loop.2498 (cdr .",
"form.2497)) #f)))) (null? .form.2497)))) (.loop.2496 (cdr .form.2488))))) (core#", "form.2499)) #f)))) (null? .form.2499)))) (.loop.2498 (cdr .form.2490))))) (core#",
"if ((core#lambda (.it.2500) (core#if .it.2500 .it.2500 #f)) (eqv? .key.2492 (cor", "if ((core#lambda (.it.2502) (core#if .it.2502 .it.2502 #f)) (eqv? .key.2494 (cor",
"e#quote or))) ((core#lambda () (core#begin (core#define .loop.2501 (core#lambda ", "e#quote or))) ((core#lambda () (core#begin (core#define .loop.2503 (core#lambda ",
"(.form.2502) (core#if (pair? .form.2502) ((core#lambda (.it.2503) (core#if .it.2", "(.form.2504) (core#if (pair? .form.2504) ((core#lambda (.it.2505) (core#if .it.2",
"503 .it.2503 ((core#lambda (.it.2504) (core#if .it.2504 .it.2504 #f)) (.loop.250", "505 .it.2505 ((core#lambda (.it.2506) (core#if .it.2506 .it.2506 #f)) (.loop.250",
"1 (cdr .form.2502))))) (.test.2487 (car .form.2502))) #f))) (.loop.2501 (cdr .fo", "3 (cdr .form.2504))))) (.test.2489 (car .form.2504))) #f))) (.loop.2503 (cdr .fo",
"rm.2488))))) (core#if #t #f #undefined)))))) (car .form.2488)) #f)))) (core#if (", "rm.2490))))) (core#if #t #f #undefined)))))) (car .form.2490)) #f)))) (core#if (",
"symbol? .form.2488) (memq .form.2488 (features)) #f)))) (eq? .form.2488 (core#qu", "symbol? .form.2490) (memq .form.2490 (features)) #f)))) (eq? .form.2490 (core#qu",
"ote else))))) ((core#lambda () (core#begin (core#define .loop.2505 (core#lambda ", "ote else))))) ((core#lambda () (core#begin (core#define .loop.2507 (core#lambda ",
"(.clauses.2506) (core#if (null? .clauses.2506) #undefined (core#if (.test.2487 (", "(.clauses.2508) (core#if (null? .clauses.2508) #undefined (core#if (.test.2489 (",
"caar .clauses.2506)) (cons (make-identifier (core#quote begin) default-environme", "caar .clauses.2508)) (cons (make-identifier (core#quote begin) default-environme",
"nt) (append (cdar .clauses.2506) (core#quote ()))) (.loop.2505 (cdr .clauses.250", "nt) (append (cdar .clauses.2508) (core#quote ()))) (.loop.2507 (cdr .clauses.250",
"6)))))) (.loop.2505 (cdr .form.2485))))))) #undefined))) (core#begin (.define-tr", "8)))))) (.loop.2507 (cdr .form.2487))))))) #undefined))) (core#begin (.define-tr",
"ansformer.2477 (core#quote import) (core#lambda (.form.2507 ._.2508) ((core#lamb", "ansformer.2479 (core#quote import) (core#lambda (.form.2509 ._.2510) ((core#lamb",
"da (.caddr.2509 .prefix.2510 .getlib.2511) ((core#lambda (.extract.2512 .collect", "da (.caddr.2511 .prefix.2512 .getlib.2513) ((core#lambda (.extract.2514 .collect",
".2513) (core#begin (core#set! .extract.2512 (core#lambda (.spec.2514) ((core#lam", ".2515) (core#begin (core#set! .extract.2514 (core#lambda (.spec.2516) ((core#lam",
"bda (.key.2515) (core#if ((core#lambda (.it.2516) (core#if .it.2516 .it.2516 ((c", "bda (.key.2517) (core#if ((core#lambda (.it.2518) (core#if .it.2518 .it.2518 ((c",
"ore#lambda (.it.2517) (core#if .it.2517 .it.2517 ((core#lambda (.it.2518) (core#", "ore#lambda (.it.2519) (core#if .it.2519 .it.2519 ((core#lambda (.it.2520) (core#",
"if .it.2518 .it.2518 ((core#lambda (.it.2519) (core#if .it.2519 .it.2519 #f)) (e", "if .it.2520 .it.2520 ((core#lambda (.it.2521) (core#if .it.2521 .it.2521 #f)) (e",
"qv? .key.2515 (core#quote except))))) (eqv? .key.2515 (core#quote prefix))))) (e", "qv? .key.2517 (core#quote except))))) (eqv? .key.2517 (core#quote prefix))))) (e",
"qv? .key.2515 (core#quote rename))))) (eqv? .key.2515 (core#quote only))) (.extr", "qv? .key.2517 (core#quote rename))))) (eqv? .key.2517 (core#quote only))) (.extr",
"act.2512 (cadr .spec.2514)) (core#if #t (.getlib.2511 .spec.2514) #undefined))) ", "act.2514 (cadr .spec.2516)) (core#if #t (.getlib.2513 .spec.2516) #undefined))) ",
"(car .spec.2514)))) (core#begin (core#set! .collect.2513 (core#lambda (.spec.252", "(car .spec.2516)))) (core#begin (core#set! .collect.2515 (core#lambda (.spec.252",
"0) ((core#lambda (.key.2521) (core#if ((core#lambda (.it.2522) (core#if .it.2522", "2) ((core#lambda (.key.2523) (core#if ((core#lambda (.it.2524) (core#if .it.2524",
" .it.2522 #f)) (eqv? .key.2521 (core#quote only))) ((core#lambda (.alist.2523) (", " .it.2524 #f)) (eqv? .key.2523 (core#quote only))) ((core#lambda (.alist.2525) (",
"map (core#lambda (.var.2524) (assq .var.2524 .alist.2523)) (cddr .spec.2520))) (", "map (core#lambda (.var.2526) (assq .var.2526 .alist.2525)) (cddr .spec.2522))) (",
".collect.2513 (cadr .spec.2520))) (core#if ((core#lambda (.it.2525) (core#if .it", ".collect.2515 (cadr .spec.2522))) (core#if ((core#lambda (.it.2527) (core#if .it",
".2525 .it.2525 #f)) (eqv? .key.2521 (core#quote rename))) ((core#lambda (.alist.", ".2527 .it.2527 #f)) (eqv? .key.2523 (core#quote rename))) ((core#lambda (.alist.",
"2526 .renames.2527) (map (core#lambda (.s.2528) ((core#lambda (.it.2529) (core#i", "2528 .renames.2529) (map (core#lambda (.s.2530) ((core#lambda (.it.2531) (core#i",
"f .it.2529 .it.2529 ((core#lambda (.it.2530) (core#if .it.2530 .it.2530 #f)) .s.", "f .it.2531 .it.2531 ((core#lambda (.it.2532) (core#if .it.2532 .it.2532 #f)) .s.",
"2528))) (assq (car .s.2528) .renames.2527))) .alist.2526)) (.collect.2513 (cadr ", "2530))) (assq (car .s.2530) .renames.2529))) .alist.2528)) (.collect.2515 (cadr ",
".spec.2520)) (map (core#lambda (.x.2531) (cons (car .x.2531) (cadr .x.2531))) (c", ".spec.2522)) (map (core#lambda (.x.2533) (cons (car .x.2533) (cadr .x.2533))) (c",
"ddr .spec.2520))) (core#if ((core#lambda (.it.2532) (core#if .it.2532 .it.2532 #", "ddr .spec.2522))) (core#if ((core#lambda (.it.2534) (core#if .it.2534 .it.2534 #",
"f)) (eqv? .key.2521 (core#quote prefix))) ((core#lambda (.alist.2533) (map (core", "f)) (eqv? .key.2523 (core#quote prefix))) ((core#lambda (.alist.2535) (map (core",
"#lambda (.s.2534) (cons (.prefix.2510 (.caddr.2509 .spec.2520) (car .s.2534)) (c", "#lambda (.s.2536) (cons (.prefix.2512 (.caddr.2511 .spec.2522) (car .s.2536)) (c",
"dr .s.2534))) .alist.2533)) (.collect.2513 (cadr .spec.2520))) (core#if ((core#l", "dr .s.2536))) .alist.2535)) (.collect.2515 (cadr .spec.2522))) (core#if ((core#l",
"ambda (.it.2535) (core#if .it.2535 .it.2535 #f)) (eqv? .key.2521 (core#quote exc", "ambda (.it.2537) (core#if .it.2537 .it.2537 #f)) (eqv? .key.2523 (core#quote exc",
"ept))) ((core#lambda (.alist.2536) ((core#lambda () (core#begin (core#define .lo", "ept))) ((core#lambda (.alist.2538) ((core#lambda () (core#begin (core#define .lo",
"op.2537 (core#lambda (.alist.2538) (core#if (null? .alist.2538) (core#quote ()) ", "op.2539 (core#lambda (.alist.2540) (core#if (null? .alist.2540) (core#quote ()) ",
"(core#if (memq (caar .alist.2538) (cddr .spec.2520)) (.loop.2537 (cdr .alist.253", "(core#if (memq (caar .alist.2540) (cddr .spec.2522)) (.loop.2539 (cdr .alist.254",
"8)) (cons (car .alist.2538) (.loop.2537 (cdr .alist.2538))))))) (.loop.2537 .ali", "0)) (cons (car .alist.2540) (.loop.2539 (cdr .alist.2540))))))) (.loop.2539 .ali",
"st.2536))))) (.collect.2513 (cadr .spec.2520))) (core#if #t (dictionary-map (cor", "st.2538))))) (.collect.2515 (cadr .spec.2522))) (core#if #t (dictionary-map (cor",
"e#lambda (.x.2539) (cons .x.2539 .x.2539)) (library-exports (.getlib.2511 .spec.", "e#lambda (.x.2541) (cons .x.2541 .x.2541)) (library-exports (.getlib.2513 .spec.",
"2520))) #undefined)))))) (car .spec.2520)))) ((core#lambda (.import.2540) (core#", "2522))) #undefined)))))) (car .spec.2522)))) ((core#lambda (.import.2542) (core#",
"begin (core#set! .import.2540 (core#lambda (.spec.2541) ((core#lambda (.lib.2542", "begin (core#set! .import.2542 (core#lambda (.spec.2543) ((core#lambda (.lib.2544",
" .alist.2543) (for-each (core#lambda (.slot.2544) (library-import .lib.2542 (cdr", " .alist.2545) (for-each (core#lambda (.slot.2546) (library-import .lib.2544 (cdr",
" .slot.2544) (car .slot.2544))) .alist.2543)) (.extract.2512 .spec.2541) (.colle", " .slot.2546) (car .slot.2546))) .alist.2545)) (.extract.2514 .spec.2543) (.colle",
"ct.2513 .spec.2541)))) (for-each .import.2540 (cdr .form.2507)))) #undefined))))", "ct.2515 .spec.2543)))) (for-each .import.2542 (cdr .form.2509)))) #undefined))))",
" #undefined #undefined)) (core#lambda (.x.2545) (car (cdr (cdr .x.2545)))) (core", " #undefined #undefined)) (core#lambda (.x.2547) (car (cdr (cdr .x.2547)))) (core",
"#lambda (.prefix.2546 .symbol.2547) (string->symbol (string-append (symbol->stri", "#lambda (.prefix.2548 .symbol.2549) (string->symbol (string-append (symbol->stri",
"ng .prefix.2546) (symbol->string .symbol.2547)))) (core#lambda (.name.2548) (cor", "ng .prefix.2548) (symbol->string .symbol.2549)))) (core#lambda (.name.2550) (cor",
"e#if (find-library .name.2548) .name.2548 (error \"library not found\" .name.2548)", "e#if (find-library .name.2550) .name.2550 (error \"library not found\" .name.2550)",
"))))) (.define-transformer.2477 (core#quote export) (core#lambda (.form.2549 ._.", "))))) (.define-transformer.2479 (core#quote export) (core#lambda (.form.2551 ._.",
"2550) ((core#lambda (.collect.2551 .export.2552) (core#begin (core#set! .collect", "2552) ((core#lambda (.collect.2553 .export.2554) (core#begin (core#set! .collect",
".2551 (core#lambda (.spec.2553) (core#if (symbol? .spec.2553) (cons .spec.2553 .", ".2553 (core#lambda (.spec.2555) (core#if (symbol? .spec.2555) (cons .spec.2555 .",
"spec.2553) (core#if (core#if (list? .spec.2553) (core#if (= (length .spec.2553) ", "spec.2555) (core#if (core#if (list? .spec.2555) (core#if (= (length .spec.2555) ",
"3) (eq? (car .spec.2553) (core#quote rename)) #f) #f) (cons (list-ref .spec.2553", "3) (eq? (car .spec.2555) (core#quote rename)) #f) #f) (cons (list-ref .spec.2555",
" 1) (list-ref .spec.2553 2)) (error \"malformed export\"))))) (core#begin (core#se", " 1) (list-ref .spec.2555 2)) (error \"malformed export\"))))) (core#begin (core#se",
"t! .export.2552 (core#lambda (.spec.2554) ((core#lambda (.slot.2555) (library-ex", "t! .export.2554 (core#lambda (.spec.2556) ((core#lambda (.slot.2557) (library-ex",
"port (car .slot.2555) (cdr .slot.2555))) (.collect.2551 .spec.2554)))) (for-each", "port (car .slot.2557) (cdr .slot.2557))) (.collect.2553 .spec.2556)))) (for-each",
" .export.2552 (cdr .form.2549))))) #undefined #undefined))))))) (core#lambda (.n", " .export.2554 (cdr .form.2551))))) #undefined #undefined))))))) (core#lambda (.n",
"ame.2556 .macro.2557) (add-macro! .name.2556 .macro.2557))) ((core#lambda () (co", "ame.2558 .macro.2559) (add-macro! .name.2558 .macro.2559))) ((core#lambda () (co",
"re#begin (make-library (core#quote (picrin base))) (core#begin (set-car! (dictio", "re#begin (make-library (core#quote (picrin base))) (core#begin (set-car! (dictio",
"nary-ref *libraries* (mangle (core#quote (picrin base)))) default-environment) (", "nary-ref *libraries* (mangle (core#quote (picrin base)))) default-environment) (",
"core#begin ((core#lambda (.export-keywords.2558) (core#begin (.export-keywords.2", "core#begin ((core#lambda (.export-keywords.2560) (core#begin (.export-keywords.2",
"558 (core#quote (define lambda quote set! if begin define-macro let let* letrec ", "560 (core#quote (define lambda quote set! if begin define-macro let let* letrec ",
"letrec* let-values let*-values define-values quasiquote unquote unquote-splicing", "letrec* let-values let*-values define-values quasiquote unquote unquote-splicing",
" and or cond case else => do when unless parameterize define-syntax syntax-quote", " and or cond case else => do when unless parameterize define-syntax syntax-quote",
" syntax-unquote syntax-quasiquote syntax-unquote-splicing let-syntax letrec-synt", " syntax-unquote syntax-quasiquote syntax-unquote-splicing let-syntax letrec-synt",
"ax syntax-error))) (core#begin (.export-keywords.2558 (core#quote (features eq? ", "ax syntax-error))) (core#begin (.export-keywords.2560 (core#quote (features eq? ",
"eqv? equal? not boolean? boolean=? pair? cons car cdr null? set-car! set-cdr! ca", "eqv? equal? not boolean? boolean=? pair? cons car cdr null? set-car! set-cdr! ca",
"ar cadr cdar cddr list? make-list list length append reverse list-tail list-ref ", "ar cadr cdar cddr list? make-list list length append reverse list-tail list-ref ",
"list-set! list-copy map for-each memq memv member assq assv assoc current-input-", "list-set! list-copy map for-each memq memv member assq assv assoc current-input-",
@ -475,14 +475,14 @@ static const char boot_library_rom[][80] = {
"list->dictionary dictionary->plist plist->dictionary make-record record? record-", "list->dictionary dictionary->plist plist->dictionary make-record record? record-",
"type record-datum default-environment make-environment find-identifier set-ident", "type record-datum default-environment make-environment find-identifier set-ident",
"ifier! eval compile add-macro! make-ephemeron-table write write-simple write-sha", "ifier! eval compile add-macro! make-ephemeron-table write write-simple write-sha",
"red display))) (.export-keywords.2558 (core#quote (find-library make-library cur", "red display))) (.export-keywords.2560 (core#quote (find-library make-library cur",
"rent-library)))))) (core#lambda (.keywords.2559) ((core#lambda (.env.2560 .expor", "rent-library)))))) (core#lambda (.keywords.2561) ((core#lambda (.env.2562 .expor",
"ts.2561) (for-each (core#lambda (.keyword.2562) (dictionary-set! .exports.2561 .", "ts.2563) (for-each (core#lambda (.keyword.2564) (dictionary-set! .exports.2563 .",
"keyword.2562 .keyword.2562)) .keywords.2559)) (library-environment (core#quote (", "keyword.2564 .keyword.2564)) .keywords.2561)) (library-environment (core#quote (",
"picrin base))) (library-exports (core#quote (picrin base)))))) (core#begin (core", "picrin base))) (library-exports (core#quote (picrin base)))))) (core#begin (core",
"#set! eval ((core#lambda (.e.2563) (core#lambda (.expr.2564 . .lib.2565) ((core#", "#set! eval ((core#lambda (.e.2565) (core#lambda (.expr.2566 . .lib.2567) ((core#",
"lambda (.lib.2566) (.e.2563 .expr.2564 (library-environment .lib.2566))) (core#i", "lambda (.lib.2568) (.e.2565 .expr.2566 (library-environment .lib.2568))) (core#i",
"f (null? .lib.2565) (current-library) (car .lib.2565))))) eval)) (core#begin (ma", "f (null? .lib.2567) (current-library) (car .lib.2567))))) eval)) (core#begin (ma",
"ke-library (core#quote (picrin user))) (current-library (core#quote (picrin user", "ke-library (core#quote (picrin user))) (current-library (core#quote (picrin user",
"))))))))))))))))))))", "))))))))))))))))))))",

View File

@ -83,7 +83,7 @@ weak_call(pic_state *pic)
if (! pic_weak_has(pic, weak, key)) { if (! pic_weak_has(pic, weak, key)) {
return pic_false_value(pic); return pic_false_value(pic);
} }
return pic_cons(pic, key, pic_weak_ref(pic, weak, key)); return pic_weak_ref(pic, weak, key);
} else { } else {
if (pic_false_p(pic, val)) { if (pic_false_p(pic, val)) {
if (pic_weak_has(pic, weak, key)) { if (pic_weak_has(pic, weak, key)) {

View File

@ -6,26 +6,20 @@
(ephemeron2 (make-ephemeron-table))) (ephemeron2 (make-ephemeron-table)))
(letrec (letrec
((wrap (lambda (var1) ((wrap (lambda (var1)
(let ((var2 (ephemeron1 var1))) (or (ephemeron1 var1)
(if var2 (let ((var2 (make-identifier var1 env)))
(cdr var2) (ephemeron1 var1 var2)
(let ((var2 (make-identifier var1 env))) (ephemeron2 var2 var1)
(ephemeron1 var1 var2) var2))))
(ephemeron2 var2 var1)
var2)))))
(unwrap (lambda (var2) (unwrap (lambda (var2)
(let ((var1 (ephemeron2 var2))) (or (ephemeron2 var2)
(if var1 var2)))
(cdr var1)
var2))))
(walk (lambda (f form) (walk (lambda (f form)
(cond (cond
((identifier? form) ((identifier? form)
(f form)) (f form))
((pair? form) ((pair? form)
(cons (walk f (car form)) (walk f (cdr form)))) (cons (walk f (car form)) (walk f (cdr form))))
((vector? form)
(list->vector (walk f (vector->list form))))
(else (else
form))))) form)))))
(let ((form (cdr form))) (let ((form (cdr form)))