#include "picrin.h" #include "picrin/extra.h" #if PIC_USE_EVAL static const char boot_compile_rom[][80] = { "(core#begin (core#begin (core#define make-identifier #undefined) (core#begin (co", "re#define identifier? #undefined) (core#begin (core#define identifier=? #undefin", "ed) (core#begin (core#define identifier-name #undefined) (core#begin (core#defin", "e identifier-environment #undefined) (core#begin (core#define make-environment #", "undefined) (core#begin (core#define default-environment #undefined) (core#begin ", "(core#define environment? #undefined) (core#begin (core#define find-identifier #", "undefined) (core#begin (core#define add-identifier! #undefined) (core#begin (cor", "e#define set-identifier! #undefined) (core#begin (core#define macro-objects #und", "efined) (core#begin (core#define expand #undefined) (call-with-values (core#lamb", "da () ((core#lambda () (core#begin (core#begin (core#define .make-identifier.214", "9 (core#lambda (.name.2173 .env.2174) (make-record (core#quote identifier) (vect", "or .name.2173 .env.2174)))) (core#begin (core#define .%identifier?.2150 (core#la", "mbda (.obj.2175) (core#if (record? .obj.2175) (eq? (record-type .obj.2175) (core", "#quote identifier)) #f))) (core#begin (core#define .identifier-environment.2151 ", "(core#lambda (.obj.2176) (core#if (.%identifier?.2150 .obj.2176) (vector-ref (re", "cord-datum .obj.2176) 1) (error \"record type mismatch\" .obj.2176 (core#quote ide", "ntifier))))) (core#define .identifier-name.2152 (core#lambda (.obj.2177) (core#i", "f (.%identifier?.2150 .obj.2177) (vector-ref (record-datum .obj.2177) 0) (error ", "\"record type mismatch\" .obj.2177 (core#quote identifier)))))))) (core#begin (cor", "e#define .identifier?.2153 (core#lambda (.obj.2178) ((core#lambda (.it.2179) (co", "re#if .it.2179 .it.2179 ((core#lambda (.it.2180) (core#if .it.2180 .it.2180 #f))", " (.%identifier?.2150 .obj.2178)))) (symbol? .obj.2178)))) (core#begin (core#defi", "ne .identifier=?.2154 (core#lambda (.id1.2181 .id2.2182) (core#if (core#if (symb", "ol? .id1.2181) (symbol? .id2.2182) #f) (eq? .id1.2181 .id2.2182) (core#if (core#", "if (.%identifier?.2150 .id1.2181) (.%identifier?.2150 .id2.2182) #f) (eq? (.find", "-identifier.2161 (.identifier-name.2152 .id1.2181) (.identifier-environment.2151", " .id1.2181)) (.find-identifier.2161 (.identifier-name.2152 .id2.2182) (.identifi", "er-environment.2151 .id2.2182))) #f)))) (core#begin (core#set! equal? ((core#lam", "bda (.e?.2183) (core#lambda (.x.2184 .y.2185) (core#if (.%identifier?.2150 .x.21", "84) (.identifier=?.2154 .x.2184 .y.2185) (.e?.2183 .x.2184 .y.2185)))) equal?)) ", "(core#begin (core#begin (core#define .%make-environment.2155 (core#lambda (.pare", "nt.2186 .prefix.2187 .binding.2188) (make-record (core#quote environment) (vecto", "r .parent.2186 .prefix.2187 .binding.2188)))) (core#begin (core#define .environm", "ent?.2156 (core#lambda (.obj.2189) (core#if (record? .obj.2189) (eq? (record-typ", "e .obj.2189) (core#quote environment)) #f))) (core#begin (core#define .environme", "nt-binding.2157 (core#lambda (.obj.2190) (core#if (.environment?.2156 .obj.2190)", " (vector-ref (record-datum .obj.2190) 2) (error \"record type mismatch\" .obj.2190", " (core#quote environment))))) (core#begin (core#define .environment-prefix.2158 ", "(core#lambda (.obj.2191) (core#if (.environment?.2156 .obj.2191) (vector-ref (re", "cord-datum .obj.2191) 1) (error \"record type mismatch\" .obj.2191 (core#quote env", "ironment))))) (core#define .environment-parent.2159 (core#lambda (.obj.2192) (co", "re#if (.environment?.2156 .obj.2192) (vector-ref (record-datum .obj.2192) 0) (er", "ror \"record type mismatch\" .obj.2192 (core#quote environment))))))))) (core#begi", "n (core#define .search-scope.2160 (core#lambda (.id.2193 .env.2194) ((.environme", "nt-binding.2157 .env.2194) .id.2193))) (core#begin (core#define .find-identifier", ".2161 (core#lambda (.id.2195 .env.2196) ((core#lambda (.it.2197) (core#if .it.21", "97 .it.2197 ((core#lambda (.it.2198) (core#if .it.2198 .it.2198 #f)) ((core#lamb", "da (.parent.2199) (core#if .parent.2199 (.find-identifier.2161 .id.2195 .parent.", "2199) (core#if (symbol? .id.2195) (.add-identifier!.2162 .id.2195 .env.2196) (.f", "ind-identifier.2161 (.identifier-name.2152 .id.2195) (.identifier-environment.21", "51 .id.2195))))) (.environment-parent.2159 .env.2196))))) (.search-scope.2160 .i", "d.2195 .env.2196)))) (core#begin (core#define .add-identifier!.2162 ((core#lambd", "a (.uniq.2200) (core#lambda (.id.2201 .env.2202) ((core#lambda (.it.2203) (core#", "if .it.2203 .it.2203 ((core#lambda (.it.2204) (core#if .it.2204 .it.2204 #f)) (c", "ore#if (core#if (not (.environment-parent.2159 .env.2202)) (symbol? .id.2201) #f", ") (string->symbol (string-append (.environment-prefix.2158 .env.2202) (symbol->s", "tring .id.2201))) ((core#lambda (.uid.2205) (core#begin (.set-identifier!.2163 .", "id.2201 .uid.2205 .env.2202) .uid.2205)) (.uniq.2200 .id.2201)))))) (.search-sco", "pe.2160 .id.2201 .env.2202)))) ((core#lambda (.n.2206) (core#lambda (.id.2207) (", "(core#lambda (.m.2208) (core#begin (core#set! .n.2206 (+ .n.2206 1)) (string->sy", "mbol (string-append \".\" (symbol->string ((core#lambda () (core#begin (core#defin", "e .loop.2209 (core#lambda (.id.2210) (core#if (symbol? .id.2210) .id.2210 (.loop", ".2209 (.identifier-name.2152 .id.2210))))) (.loop.2209 .id.2207))))) \".\" (number", "->string .m.2208))))) .n.2206))) 0))) (core#begin (core#define .set-identifier!.", "2163 (core#lambda (.id.2211 .uid.2212 .env.2213) ((.environment-binding.2157 .en", "v.2213) .id.2211 .uid.2212))) (core#begin (core#define .make-environment.2164 (c", "ore#lambda (.prefix.2214) (.%make-environment.2155 #f (symbol->string .prefix.22", "14) (make-ephemeron-table)))) (core#begin (core#define .default-environment.2165", " ((core#lambda (.env.2215) (core#begin (for-each (core#lambda (.x.2216) (.set-id", "entifier!.2163 .x.2216 .x.2216 .env.2215)) (core#quote (core#define core#set! co", "re#quote core#lambda core#if core#begin core#define-macro))) .env.2215)) (.make-", "environment.2164 (string->symbol \"\")))) (core#begin (core#define .extend-environ", "ment.2166 (core#lambda (.parent.2217) (.%make-environment.2155 .parent.2217 #f (", "make-ephemeron-table)))) (core#begin (core#define .global-macro-table.2167 (make", "-dictionary)) (core#begin (core#define .find-macro.2168 (core#lambda (.uid.2218)", " (core#if (dictionary-has? .global-macro-table.2167 .uid.2218) (dictionary-ref .", "global-macro-table.2167 .uid.2218) #f))) (core#begin (core#define .add-macro!.21", "69 (core#lambda (.uid.2219 .expander.2220) (dictionary-set! .global-macro-table.", "2167 .uid.2219 .expander.2220))) (core#begin (core#define .shadow-macro!.2170 (c", "ore#lambda (.uid.2221) (core#if (dictionary-has? .global-macro-table.2167 .uid.2", "221) (dictionary-delete! .global-macro-table.2167 .uid.2221) #undefined))) (core", "#begin (core#define .macro-objects.2171 (core#lambda () .global-macro-table.2167", ")) (core#begin (core#define .expand.2172 ((core#lambda (.task-queue.2222) (core#", "begin (core#define .queue.2223 (core#lambda (.task.2236) ((core#lambda (.tmp.223", "7) (core#begin (.task-queue.2222 (cons (cons .tmp.2237 .task.2236) (.task-queue.", "2222))) .tmp.2237)) (cons #f #f)))) (core#begin (core#define .run-all.2224 (core", "#lambda () (for-each (core#lambda (.x.2238) ((core#lambda (.task.2239 .skelton.2", "240) ((core#lambda (.x.2241) (core#begin (set-car! .skelton.2240 (car .x.2241)) ", "(set-cdr! .skelton.2240 (cdr .x.2241)))) (.task.2239))) (cdr .x.2238) (car .x.22", "38))) (reverse (.task-queue.2222))))) (core#begin (core#define .caddr.2225 (core", "#lambda (.x.2242) (car (cddr .x.2242)))) (core#begin (core#define .map*.2226 (co", "re#lambda (.proc.2243 .list*.2244) (core#if (null? .list*.2244) .list*.2244 (cor", "e#if (pair? .list*.2244) (cons (.proc.2243 (car .list*.2244)) (.map*.2226 .proc.", "2243 (cdr .list*.2244))) (.proc.2243 .list*.2244))))) (core#begin (core#define .", "literal?.2227 (core#lambda (.x.2245) (not ((core#lambda (.it.2246) (core#if .it.", "2246 .it.2246 ((core#lambda (.it.2247) (core#if .it.2247 .it.2247 #f)) (pair? .x", ".2245)))) (.identifier?.2153 .x.2245))))) (core#begin (core#define .call?.2228 (", "core#lambda (.x.2248) (core#if (list? .x.2248) (core#if (not (null? .x.2248)) (.", "identifier?.2153 (car .x.2248)) #f) #f))) (core#begin (core#define .expand-varia", "ble.2229 (core#lambda (.var.2249 .env.2250) ((core#lambda (.x.2251) ((core#lambd", "a (.m.2252) (core#if .m.2252 (.expand-node.2234 (.m.2252 .var.2249 .env.2250) .e", "nv.2250) .x.2251)) (.find-macro.2168 .x.2251))) (.find-identifier.2161 .var.2249", " .env.2250)))) (core#begin (core#define .expand-quote.2230 (core#lambda (.obj.22", "53) (cons (core#quote core#quote) (cons .obj.2253 (core#quote ()))))) (core#begi", "n (core#define .expand-define.2231 (core#lambda (.var.2254 .form.2255 .env.2256)", " ((core#lambda (.uid.2257) (core#begin (.shadow-macro!.2170 .uid.2257) (cons (co", "re#quote core#define) (cons .uid.2257 (cons (.expand-node.2234 .form.2255 .env.2", "256) (core#quote ())))))) (.add-identifier!.2162 .var.2254 .env.2256)))) (core#b", "egin (core#define .expand-lambda.2232 (core#lambda (.args.2258 .body.2259 .env.2", "260) ((core#lambda (.env.2261) ((core#lambda (.args.2262) (with-dynamic-environm", "ent (list (cons .task-queue.2222 (core#quote ()))) (core#lambda () ((core#lambda", " (.body.2263) (core#begin (.run-all.2224) (cons (core#quote core#lambda) (cons .", "args.2262 (cons .body.2263 (core#quote ())))))) (.expand-node.2234 .body.2259 .e", "nv.2261))))) (.map*.2226 (core#lambda (.var.2264) (.add-identifier!.2162 .var.22", "64 .env.2261)) .args.2258))) (.extend-environment.2166 .env.2260)))) (core#begin", " (core#define .expand-define-macro.2233 (core#lambda (.var.2265 .transformer.226", "6 .env.2267) ((core#lambda (.uid.2268) ((core#lambda (.expander.2269) (core#begi", "n (.add-macro!.2169 .uid.2268 .expander.2269) #undefined)) (load (.expand.2235 .", "transformer.2266 .env.2267)))) (.add-identifier!.2162 .var.2265 .env.2267)))) (c", "ore#begin (core#define .expand-node.2234 (core#lambda (.expr.2270 .env.2271) (co", "re#if (.literal?.2227 .expr.2270) .expr.2270 (core#if (.identifier?.2153 .expr.2", "270) (.expand-variable.2229 .expr.2270 .env.2271) (core#if (.call?.2228 .expr.22", "70) ((core#lambda (.functor.2272) ((core#lambda (.key.2273) (core#if ((core#lamb", "da (.it.2274) (core#if .it.2274 .it.2274 #f)) (eqv? .key.2273 (core#quote core#q", "uote))) (.expand-quote.2230 (cadr .expr.2270)) (core#if ((core#lambda (.it.2275)", " (core#if .it.2275 .it.2275 #f)) (eqv? .key.2273 (core#quote core#define))) (.ex", "pand-define.2231 (cadr .expr.2270) (.caddr.2225 .expr.2270) .env.2271) (core#if ", "((core#lambda (.it.2276) (core#if .it.2276 .it.2276 #f)) (eqv? .key.2273 (core#q", "uote core#lambda))) (.queue.2223 (core#lambda () (.expand-lambda.2232 (cadr .exp", "r.2270) (.caddr.2225 .expr.2270) .env.2271))) (core#if ((core#lambda (.it.2277) ", "(core#if .it.2277 .it.2277 #f)) (eqv? .key.2273 (core#quote core#define-macro)))", " (.expand-define-macro.2233 (cadr .expr.2270) (.caddr.2225 .expr.2270) .env.2271", ") (core#if #t ((core#lambda (.m.2278) (core#if .m.2278 (.expand-node.2234 (.m.22", "78 .expr.2270 .env.2271) .env.2271) (map (core#lambda (.x.2279) (.expand-node.22", "34 .x.2279 .env.2271)) .expr.2270))) (.find-macro.2168 .functor.2272)) #undefine", "d)))))) .functor.2272)) (.find-identifier.2161 (car .expr.2270) .env.2271)) (cor", "e#if (list? .expr.2270) (map (core#lambda (.x.2280) (.expand-node.2234 .x.2280 .", "env.2271)) .expr.2270) (error \"invalid expression\" .expr.2270))))))) (core#begin", " (core#define .expand.2235 (core#lambda (.expr.2281 .env.2282) ((core#lambda (.x", ".2283) (core#begin (.run-all.2224) .x.2283)) (.expand-node.2234 .expr.2281 .env.", "2282)))) .expand.2235)))))))))))))) (make-parameter (core#quote ())))) (values .", "make-identifier.2149 .identifier?.2153 .identifier=?.2154 .identifier-name.2152 ", ".identifier-environment.2151 .make-environment.2164 .default-environment.2165 .e", "nvironment?.2156 .find-identifier.2161 .add-identifier!.2162 .set-identifier!.21", "63 .macro-objects.2171 .expand.2172)))))))))))))))))))))) (core#lambda (.make-id", "entifier.2284 .identifier?.2285 .identifier=?.2286 .identifier-name.2287 .identi", "fier-environment.2288 .make-environment.2289 .default-environment.2290 .environm", "ent?.2291 .find-identifier.2292 .add-identifier!.2293 .set-identifier!.2294 .mac", "ro-objects.2295 .expand.2296) (core#begin (core#set! make-identifier .make-ident", "ifier.2284) (core#begin (core#set! identifier? .identifier?.2285) (core#begin (c", "ore#set! identifier=? .identifier=?.2286) (core#begin (core#set! identifier-name", " .identifier-name.2287) (core#begin (core#set! identifier-environment .identifie", "r-environment.2288) (core#begin (core#set! make-environment .make-environment.22", "89) (core#begin (core#set! default-environment .default-environment.2290) (core#", "begin (core#set! environment? .environment?.2291) (core#begin (core#set! find-id", "entifier .find-identifier.2292) (core#begin (core#set! add-identifier! .add-iden", "tifier!.2293) (core#begin (core#set! set-identifier! .set-identifier!.2294) (cor", "e#begin (core#set! macro-objects .macro-objects.2295) (core#set! expand .expand.", "2296)))))))))))))))))))))))))))) (core#begin ((core#lambda () (core#begin (core#", "define .define-transformer.2297 (core#lambda (.name.2299 .transformer.2300) (dic", "tionary-set! (macro-objects) .name.2299 .transformer.2300))) (core#begin (core#d", "efine .the.2298 (core#lambda (.var.2301) (make-identifier .var.2301 default-envi", "ronment))) ((core#lambda (.the-core-define.2302 .the-core-lambda.2303 .the-core-", "begin.2304 .the-core-quote.2305 .the-core-set!.2306 .the-core-if.2307 .the-core-", "define-macro.2308 .the-define.2309 .the-lambda.2310 .the-begin.2311 .the-quote.2", "312 .the-set!.2313 .the-if.2314 .the-define-macro.2315) (core#begin (.define-tra", "nsformer.2297 (core#quote quote) (core#lambda (.form.2320 .env.2321) (core#if (=", " (length .form.2320) 2) ((core#lambda (.obj.2322) (core#if (pair? .obj.2322) (co", "ns (.the.2298 (core#quote cons)) (cons (cons .the-quote.2312 (cons (car .obj.232", "2) (core#quote ()))) (cons (cons .the-quote.2312 (cons (cdr .obj.2322) (core#quo", "te ()))) (core#quote ())))) (core#if (vector? .obj.2322) (cons (.the.2298 (core#", "quote vector)) (vector->list (vector-map (core#lambda (.obj.2323) (cons .the-quo", "te.2312 (cons .obj.2323 (core#quote ())))) .obj.2322))) (cons .the-core-quote.23", "05 (cons .obj.2322 (core#quote ())))))) (cadr .form.2320)) (error \"malformed quo", "te\" .form.2320)))) (core#begin (.define-transformer.2297 (core#quote if) (core#l", "ambda (.form.2324 .env.2325) ((core#lambda (.len.2326) (core#if (= .len.2326 3) ", "(append .form.2324 (cons (core#quote #undefined) (core#quote ()))) (core#if (= .", "len.2326 4) (cons .the-core-if.2307 (cdr .form.2324)) (error \"malformed if\" .for", "m.2324)))) (length .form.2324)))) (core#begin (.define-transformer.2297 (core#qu", "ote begin) (core#lambda (.form.2327 .env.2328) ((core#lambda (.len.2329) (core#i", "f (= .len.2329 1) #undefined (core#if (= .len.2329 2) (cadr .form.2327) (core#if", " (= .len.2329 3) (cons .the-core-begin.2304 (cdr .form.2327)) (cons .the-core-be", "gin.2304 (cons (cadr .form.2327) (cons (cons .the-begin.2311 (cddr .form.2327)) ", "(core#quote ())))))))) (length .form.2327)))) (core#begin (.define-transformer.2", "297 (core#quote set!) (core#lambda (.form.2330 .env.2331) (core#if (core#if (= (", "length .form.2330) 3) (identifier? (cadr .form.2330)) #f) (cons .the-core-set!.2", "306 (cdr .form.2330)) (error \"malformed set!\" .form.2330)))) (core#begin (core#d", "efine .check-formal.2316 (core#lambda (.formal.2332) ((core#lambda (.it.2333) (c", "ore#if .it.2333 .it.2333 ((core#lambda (.it.2334) (core#if .it.2334 .it.2334 ((c", "ore#lambda (.it.2335) (core#if .it.2335 .it.2335 #f)) (core#if (pair? .formal.23", "32) (core#if (identifier? (car .formal.2332)) (.check-formal.2316 (cdr .formal.2", "332)) #f) #f)))) (identifier? .formal.2332)))) (null? .formal.2332)))) (core#beg", "in (.define-transformer.2297 (core#quote lambda) (core#lambda (.form.2336 .env.2", "337) (core#if (= (length .form.2336) 1) (error \"malformed lambda\" .form.2336) (c", "ore#if (.check-formal.2316 (cadr .form.2336)) (cons .the-core-lambda.2303 (cons ", "(cadr .form.2336) (cons (cons .the-begin.2311 (cddr .form.2336)) (core#quote ())", "))) (error \"malformed lambda\" .form.2336))))) (core#begin (.define-transformer.2", "297 (core#quote define) (core#lambda (.form.2338 .env.2339) ((core#lambda (.len.", "2340) (core#if (= .len.2340 1) (error \"malformed define\" .form.2338) ((core#lamb", "da (.formal.2341) (core#if (identifier? .formal.2341) (core#if (= .len.2340 3) (", "cons .the-core-define.2302 (cdr .form.2338)) (error \"malformed define\" .form.233", "8)) (core#if (pair? .formal.2341) (cons .the-define.2309 (cons (car .formal.2341", ") (cons (cons .the-lambda.2310 (cons (cdr .formal.2341) (cddr .form.2338))) (cor", "e#quote ())))) (error \"define: binding to non-varaible object\" .form.2338)))) (c", "adr .form.2338)))) (length .form.2338)))) (core#begin (.define-transformer.2297 ", "(core#quote define-macro) (core#lambda (.form.2342 .env.2343) (core#if (= (lengt", "h .form.2342) 3) (core#if (identifier? (cadr .form.2342)) (cons .the-core-define", "-macro.2308 (cdr .form.2342)) (error \"define-macro: binding to non-variable obje", "ct\" .form.2342)) (error \"malformed define-macro\" .form.2342)))) (core#begin #und", "efined (core#begin (.define-transformer.2297 (core#quote else) (core#lambda ._.2", "344 (error \"invalid use of auxiliary syntax\" (core#quote else)))) (core#begin (.", "define-transformer.2297 (core#quote =>) (core#lambda ._.2345 (error \"invalid use", " of auxiliary syntax\" (core#quote =>)))) (core#begin (.define-transformer.2297 (", "core#quote unquote) (core#lambda ._.2346 (error \"invalid use of auxiliary syntax", "\" (core#quote unquote)))) (core#begin (.define-transformer.2297 (core#quote unqu", "ote-splicing) (core#lambda ._.2347 (error \"invalid use of auxiliary syntax\" (cor", "e#quote unquote-splicing)))) (core#begin (.define-transformer.2297 (core#quote l", "et) (core#lambda (.form.2348 .env.2349) (core#if (identifier? (cadr .form.2348))", " ((core#lambda (.name.2350 .formal.2351 .body.2352) (cons (cons .the-lambda.2310", " (cons (core#quote ()) (cons (cons .the-define.2309 (cons (cons .name.2350 (map ", "car .formal.2351)) .body.2352)) (cons (cons .name.2350 (map cadr .formal.2351)) ", "(core#quote ()))))) (core#quote ()))) (car (cdr .form.2348)) (car (cdr (cdr .for", "m.2348))) (cdr (cdr (cdr .form.2348)))) ((core#lambda (.formal.2353 .body.2354) ", "(cons (cons .the-lambda.2310 (cons (map car .formal.2353) .body.2354)) (map cadr", " .formal.2353))) (car (cdr .form.2348)) (cdr (cdr .form.2348)))))) (core#begin (", ".define-transformer.2297 (core#quote and) (core#lambda (.form.2355 .env.2356) (c", "ore#if (null? (cdr .form.2355)) #t (core#if (null? (cddr .form.2355)) (cadr .for", "m.2355) (cons .the-if.2314 (cons (cadr .form.2355) (cons (cons (.the.2298 (core#", "quote and)) (cddr .form.2355)) (cons (core#quote #f) (core#quote ()))))))))) (co", "re#begin (.define-transformer.2297 (core#quote or) (core#lambda (.form.2357 .env", ".2358) (core#if (null? (cdr .form.2357)) #f ((core#lambda (.tmp.2359) (cons (.th", "e.2298 (core#quote let)) (cons (cons (cons .tmp.2359 (cons (cadr .form.2357) (co", "re#quote ()))) (core#quote ())) (cons (cons .the-if.2314 (cons .tmp.2359 (cons .", "tmp.2359 (cons (cons (.the.2298 (core#quote or)) (cddr .form.2357)) (core#quote ", "()))))) (core#quote ()))))) (make-identifier (core#quote it) .env.2358))))) (cor", "e#begin (.define-transformer.2297 (core#quote cond) (core#lambda (.form.2360 .en", "v.2361) ((core#lambda (.clauses.2362) (core#if (null? .clauses.2362) #undefined ", "((core#lambda (.clause.2363) (core#if (core#if (identifier? (car .clause.2363)) ", "(identifier=? (.the.2298 (core#quote else)) (make-identifier (car .clause.2363) ", ".env.2361)) #f) (cons .the-begin.2311 (cdr .clause.2363)) (core#if (null? (cdr .", "clause.2363)) (cons (.the.2298 (core#quote or)) (cons (car .clause.2363) (cons (", "cons (.the.2298 (core#quote cond)) (cdr .clauses.2362)) (core#quote ())))) (core", "#if (core#if (identifier? (cadr .clause.2363)) (identifier=? (.the.2298 (core#qu", "ote =>)) (make-identifier (cadr .clause.2363) .env.2361)) #f) ((core#lambda (.tm", "p.2364) (cons (.the.2298 (core#quote let)) (cons (cons (cons .tmp.2364 (cons (ca", "r .clause.2363) (core#quote ()))) (core#quote ())) (cons (cons .the-if.2314 (con", "s .tmp.2364 (cons (cons (cadr (cdr .clause.2363)) (cons .tmp.2364 (core#quote ()", "))) (cons (cons (.the.2298 (core#quote cond)) (cddr .form.2360)) (core#quote ())", ")))) (core#quote ()))))) (make-identifier (core#quote tmp) .env.2361)) (cons .th", "e-if.2314 (cons (car .clause.2363) (cons (cons .the-begin.2311 (cdr .clause.2363", ")) (cons (cons (.the.2298 (core#quote cond)) (cdr .clauses.2362)) (core#quote ()", "))))))))) (car .clauses.2362)))) (cdr .form.2360)))) (core#begin (.define-transf", "ormer.2297 (core#quote quasiquote) (core#lambda (.form.2365 .env.2366) (core#beg", "in (core#define .quasiquote?.2367 (core#lambda (.form.2371) (core#if (pair? .for", "m.2371) (core#if (identifier? (car .form.2371)) (identifier=? (.the.2298 (core#q", "uote quasiquote)) (make-identifier (car .form.2371) .env.2366)) #f) #f))) (core#", "begin (core#define .unquote?.2368 (core#lambda (.form.2372) (core#if (pair? .for", "m.2372) (core#if (identifier? (car .form.2372)) (identifier=? (.the.2298 (core#q", "uote unquote)) (make-identifier (car .form.2372) .env.2366)) #f) #f))) (core#beg", "in (core#define .unquote-splicing?.2369 (core#lambda (.form.2373) (core#if (pair", "? .form.2373) (core#if (pair? (car .form.2373)) (core#if (identifier? (caar .for", "m.2373)) (identifier=? (.the.2298 (core#quote unquote-splicing)) (make-identifie", "r (caar .form.2373) .env.2366)) #f) #f) #f))) (core#begin (core#define .qq.2370 ", "(core#lambda (.depth.2374 .expr.2375) (core#if (.unquote?.2368 .expr.2375) (core", "#if (= .depth.2374 1) (cadr .expr.2375) (list (.the.2298 (core#quote list)) (lis", "t (.the.2298 (core#quote quote)) (.the.2298 (core#quote unquote))) (.qq.2370 (- ", ".depth.2374 1) (car (cdr .expr.2375))))) (core#if (.unquote-splicing?.2369 .expr", ".2375) (core#if (= .depth.2374 1) (list (.the.2298 (core#quote append)) (car (cd", "r (car .expr.2375))) (.qq.2370 .depth.2374 (cdr .expr.2375))) (list (.the.2298 (", "core#quote cons)) (list (.the.2298 (core#quote list)) (list (.the.2298 (core#quo", "te quote)) (.the.2298 (core#quote unquote-splicing))) (.qq.2370 (- .depth.2374 1", ") (car (cdr (car .expr.2375))))) (.qq.2370 .depth.2374 (cdr .expr.2375)))) (core", "#if (.quasiquote?.2367 .expr.2375) (list (.the.2298 (core#quote list)) (list (.t", "he.2298 (core#quote quote)) (.the.2298 (core#quote quasiquote))) (.qq.2370 (+ .d", "epth.2374 1) (car (cdr .expr.2375)))) (core#if (pair? .expr.2375) (list (.the.22", "98 (core#quote cons)) (.qq.2370 .depth.2374 (car .expr.2375)) (.qq.2370 .depth.2", "374 (cdr .expr.2375))) (core#if (vector? .expr.2375) (list (.the.2298 (core#quot", "e list->vector)) (.qq.2370 .depth.2374 (vector->list .expr.2375))) (list (.the.2", "298 (core#quote quote)) .expr.2375)))))))) ((core#lambda (.x.2376) (.qq.2370 1 .", "x.2376)) (cadr .form.2365)))))))) (core#begin (.define-transformer.2297 (core#qu", "ote let*) (core#lambda (.form.2377 .env.2378) ((core#lambda (.bindings.2379 .bod", "y.2380) (core#if (null? .bindings.2379) (cons (.the.2298 (core#quote let)) (cons", " (core#quote ()) .body.2380)) (cons (.the.2298 (core#quote let)) (cons (cons (co", "ns (car (car .bindings.2379)) (cdr (car .bindings.2379))) (core#quote ())) (cons", " (cons (.the.2298 (core#quote let*)) (cons (cdr .bindings.2379) .body.2380)) (co", "re#quote ())))))) (car (cdr .form.2377)) (cdr (cdr .form.2377))))) (core#begin (", ".define-transformer.2297 (core#quote letrec) (core#lambda (.form.2381 .env.2382)", " (cons (.the.2298 (core#quote letrec*)) (cdr .form.2381)))) (core#begin (.define", "-transformer.2297 (core#quote letrec*) (core#lambda (.form.2383 .env.2384) ((cor", "e#lambda (.bindings.2385 .body.2386) ((core#lambda (.variables.2387 .initials.23", "88) (cons (.the.2298 (core#quote let)) (cons .variables.2387 (append .initials.2", "388 (append .body.2386 (core#quote ())))))) (map (core#lambda (.v.2389) (cons .v", ".2389 (cons (core#quote #undefined) (core#quote ())))) (map car .bindings.2385))", " (map (core#lambda (.v.2390) (cons (.the.2298 (core#quote set!)) (append .v.2390", " (core#quote ())))) .bindings.2385))) (car (cdr .form.2383)) (cdr (cdr .form.238", "3))))) (core#begin (.define-transformer.2297 (core#quote let-values) (core#lambd", "a (.form.2391 .env.2392) (cons (.the.2298 (core#quote let*-values)) (append (cdr", " .form.2391) (core#quote ()))))) (core#begin (.define-transformer.2297 (core#quo", "te let*-values) (core#lambda (.form.2393 .env.2394) ((core#lambda (.formals.2395", " .body.2396) (core#if (null? .formals.2395) (cons (.the.2298 (core#quote let)) (", "cons (core#quote ()) (append .body.2396 (core#quote ())))) ((core#lambda (.forma", "l.2397) (cons (.the.2298 (core#quote call-with-values)) (cons (cons .the-lambda.", "2310 (cons (core#quote ()) (cdr .formal.2397))) (cons (cons (.the.2298 (core#quo", "te lambda)) (cons (car .formal.2397) (cons (cons (.the.2298 (core#quote let*-val", "ues)) (cons (cdr .formals.2395) .body.2396)) (core#quote ())))) (core#quote ()))", "))) (car .formals.2395)))) (cadr .form.2393) (cddr .form.2393)))) (core#begin (.", "define-transformer.2297 (core#quote define-values) (core#lambda (.form.2398 .env", ".2399) ((core#lambda (.formal.2400 .body.2401) ((core#lambda (.tmps.2402) (cons ", ".the-begin.2311 (append ((core#lambda () (core#begin (core#define .loop.2403 (co", "re#lambda (.formal.2404) (core#if (identifier? .formal.2404) (cons (cons .the-de", "fine.2309 (cons .formal.2404 (cons (core#quote #undefined) (core#quote ())))) (c", "ore#quote ())) (core#if (pair? .formal.2404) (cons (cons .the-define.2309 (cons ", "(car .formal.2404) (cons (core#quote #undefined) (core#quote ())))) (.loop.2403 ", "(cdr .formal.2404))) (core#quote ()))))) (.loop.2403 .formal.2400)))) (cons (con", "s (.the.2298 (core#quote call-with-values)) (cons (cons .the-lambda.2310 (cons (", "core#quote ()) .body.2401)) (cons (cons .the-lambda.2310 (cons .tmps.2402 ((core", "#lambda () (core#begin (core#define .loop.2405 (core#lambda (.formal.2406 .tmps.", "2407) (core#if (identifier? .formal.2406) (cons (cons .the-set!.2313 (cons .form", "al.2406 (cons .tmps.2407 (core#quote ())))) (core#quote ())) (core#if (pair? .fo", "rmal.2406) (cons (cons .the-set!.2313 (cons (car .formal.2406) (cons (car .tmps.", "2407) (core#quote ())))) (.loop.2405 (cdr .formal.2406) (cdr .tmps.2407))) (core", "#quote ()))))) (.loop.2405 .formal.2400 .tmps.2402)))))) (core#quote ())))) (cor", "e#quote ()))))) ((core#lambda () (core#begin (core#define .loop.2408 (core#lambd", "a (.formal.2409) (core#if (identifier? .formal.2409) (make-identifier .formal.24", "09 .env.2399) (core#if (pair? .formal.2409) (cons (make-identifier (car .formal.", "2409) .env.2399) (.loop.2408 (cdr .formal.2409))) (core#quote ()))))) (.loop.240", "8 .formal.2400)))))) (cadr .form.2398) (cddr .form.2398)))) (core#begin (.define", "-transformer.2297 (core#quote do) (core#lambda (.form.2410 .env.2411) ((core#lam", "bda (.bindings.2412 .test.2413 .cleanup.2414 .body.2415) ((core#lambda (.loop.24", "16) (cons (.the.2298 (core#quote let)) (cons .loop.2416 (cons (map (core#lambda ", "(.x.2417) (cons (car .x.2417) (cons (cadr .x.2417) (core#quote ())))) .bindings.", "2412) (cons (cons .the-if.2314 (cons .test.2413 (cons (cons .the-begin.2311 .cle", "anup.2414) (cons (cons .the-begin.2311 (append .body.2415 (cons (cons .loop.2416", " (map (core#lambda (.x.2418) (core#if (null? (cdr (cdr .x.2418))) (car .x.2418) ", "(car (cdr (cdr .x.2418))))) .bindings.2412)) (core#quote ())))) (core#quote ()))", "))) (core#quote ())))))) (make-identifier (core#quote loop) .env.2411))) (car (c", "dr .form.2410)) (car (car (cdr (cdr .form.2410)))) (cdr (car (cdr (cdr .form.241", "0)))) (cdr (cdr (cdr .form.2410)))))) (core#begin (.define-transformer.2297 (cor", "e#quote when) (core#lambda (.form.2419 .env.2420) ((core#lambda (.test.2421 .bod", "y.2422) (cons .the-if.2314 (cons .test.2421 (cons (cons .the-begin.2311 (append ", ".body.2422 (core#quote ()))) (cons (core#quote #undefined) (core#quote ())))))) ", "(car (cdr .form.2419)) (cdr (cdr .form.2419))))) (core#begin (.define-transforme", "r.2297 (core#quote unless) (core#lambda (.form.2423 .env.2424) ((core#lambda (.t", "est.2425 .body.2426) (cons .the-if.2314 (cons .test.2425 (cons (core#quote #unde", "fined) (cons (cons .the-begin.2311 (append .body.2426 (core#quote ()))) (core#qu", "ote ())))))) (car (cdr .form.2423)) (cdr (cdr .form.2423))))) (core#begin (.defi", "ne-transformer.2297 (core#quote case) (core#lambda (.form.2427 .env.2428) ((core", "#lambda (.key.2429 .clauses.2430) ((core#lambda (.the-key.2431) (cons (.the.2298", " (core#quote let)) (cons (cons (cons .the-key.2431 (cons .key.2429 (core#quote (", ")))) (core#quote ())) (cons ((core#lambda () (core#begin (core#define .loop.2432", " (core#lambda (.clauses.2433) (core#if (null? .clauses.2433) #undefined ((core#l", "ambda (.clause.2434) (cons .the-if.2314 (cons (core#if (core#if (identifier? (ca", "r .clause.2434)) (identifier=? (.the.2298 (core#quote else)) (make-identifier (c", "ar .clause.2434) .env.2428)) #f) #t (cons (.the.2298 (core#quote or)) (append (m", "ap (core#lambda (.x.2435) (cons (.the.2298 (core#quote eqv?)) (cons .the-key.243", "1 (cons (cons .the-quote.2312 (cons .x.2435 (core#quote ()))) (core#quote ()))))", ") (car .clause.2434)) (core#quote ())))) (cons (core#if (core#if (identifier? (c", "adr .clause.2434)) (identifier=? (.the.2298 (core#quote =>)) (make-identifier (c", "adr .clause.2434) .env.2428)) #f) (cons (car (cdr (cdr .clause.2434))) (cons .th", "e-key.2431 (core#quote ()))) (cons .the-begin.2311 (append (cdr .clause.2434) (c", "ore#quote ())))) (cons (.loop.2432 (cdr .clauses.2433)) (core#quote ())))))) (ca", "r .clauses.2433))))) (.loop.2432 .clauses.2430)))) (core#quote ()))))) (make-ide", "ntifier (core#quote key) .env.2428))) (car (cdr .form.2427)) (cdr (cdr .form.242", "7))))) (core#begin (.define-transformer.2297 (core#quote parameterize) (core#lam", "bda (.form.2436 .env.2437) ((core#lambda (.formal.2438 .body.2439) (cons (.the.2", "298 (core#quote with-dynamic-environment)) (cons (cons (.the.2298 (core#quote li", "st)) (append (map (core#lambda (.x.2440) (cons (.the.2298 (core#quote cons)) (co", "ns (car .x.2440) (cons (cadr .x.2440) (core#quote ()))))) .formal.2438) (core#qu", "ote ()))) (cons (cons .the-lambda.2310 (cons (core#quote ()) (append .body.2439 ", "(core#quote ())))) (core#quote ()))))) (car (cdr .form.2436)) (cdr (cdr .form.24", "36))))) (.define-transformer.2297 (core#quote define-record-type) (core#lambda (", ".form.2441 .env.2442) ((core#lambda (.type.2443 .ctor.2444 .pred.2445 .fields.24", "46) (cons .the-begin.2311 (cons (cons .the-define.2309 (cons .ctor.2444 (cons (c", "ons (.the.2298 (core#quote make-record)) (cons (cons (core#quote quote) (cons .t", "ype.2443 (core#quote ()))) (cons (cons (.the.2298 (core#quote vector)) (map (cor", "e#lambda (.field.2447) (core#if (memq (car .field.2447) (cdr .ctor.2444)) (car .", "field.2447) #undefined)) .fields.2446)) (core#quote ())))) (core#quote ())))) (c", "ons (cons .the-define.2309 (cons .pred.2445 (cons (cons (.the.2298 (core#quote l", "ambda)) (cons (cons (core#quote obj) (core#quote ())) (cons (cons (.the.2298 (co", "re#quote and)) (cons (cons (.the.2298 (core#quote record?)) (cons (core#quote ob", "j) (core#quote ()))) (cons (cons (.the.2298 (core#quote eq?)) (cons (cons (.the.", "2298 (core#quote record-type)) (cons (core#quote obj) (core#quote ()))) (cons (c", "ons (core#quote quote) (cons .type.2443 (core#quote ()))) (core#quote ())))) (co", "re#quote ())))) (core#quote ())))) (core#quote ())))) ((core#lambda () (core#beg", "in (core#define .loop.2448 (core#lambda (.fields.2449 .pos.2450 .acc.2451) (core", "#if (null? .fields.2449) .acc.2451 ((core#lambda (.field.2452) ((core#lambda (.d", "efs.2453) (.loop.2448 (cdr .fields.2449) (+ .pos.2450 1) (append .defs.2453 .acc", ".2451))) (cons (cons .the-define.2309 (cons (cons (cadr .field.2452) (cons (core", "#quote obj) (core#quote ()))) (cons (cons .the-if.2314 (cons (cons .pred.2445 (c", "ons (core#quote obj) (core#quote ()))) (cons (cons (.the.2298 (core#quote vector", "-ref)) (cons (cons (.the.2298 (core#quote record-datum)) (cons (core#quote obj) ", "(core#quote ()))) (cons .pos.2450 (core#quote ())))) (cons (cons (.the.2298 (cor", "e#quote error)) (cons (core#quote \"record type mismatch\") (cons (core#quote obj)", " (cons (cons (core#quote quote) (cons .type.2443 (core#quote ()))) (core#quote (", ")))))) (core#quote ()))))) (core#quote ())))) (core#if (null? (cddr .field.2452)", ") (core#quote ()) (cons (cons .the-define.2309 (cons (cons (car (cddr .field.245", "2)) (cons (core#quote obj) (cons (core#quote value) (core#quote ())))) (cons (co", "ns .the-if.2314 (cons (cons .pred.2445 (cons (core#quote obj) (core#quote ()))) ", "(cons (cons (.the.2298 (core#quote vector-set!)) (cons (cons (.the.2298 (core#qu", "ote record-datum)) (cons (core#quote obj) (core#quote ()))) (cons .pos.2450 (con", "s (core#quote value) (core#quote ()))))) (cons (cons (.the.2298 (core#quote erro", "r)) (cons (core#quote \"record type mismatch\") (cons (core#quote obj) (cons (cons", " (core#quote quote) (cons .type.2443 (core#quote ()))) (core#quote ()))))) (core", "#quote ()))))) (core#quote ())))) (core#quote ())))))) (car .fields.2449))))) (.", "loop.2448 .fields.2446 0 (core#quote ()))))))))) (car (cdr .form.2441)) (car (cd", "r (cdr .form.2441))) (car (cdr (cdr (cdr .form.2441)))) (cdr (cdr (cdr (cdr .for", "m.2441))))))))))))))))))))))))))))))))))))) (.the.2298 (core#quote core#define))", " (.the.2298 (core#quote core#lambda)) (.the.2298 (core#quote core#begin)) (.the.", "2298 (core#quote core#quote)) (.the.2298 (core#quote core#set!)) (.the.2298 (cor", "e#quote core#if)) (.the.2298 (core#quote core#define-macro)) (.the.2298 (core#qu", "ote define)) (.the.2298 (core#quote lambda)) (.the.2298 (core#quote begin)) (.th", "e.2298 (core#quote quote)) (.the.2298 (core#quote set!)) (.the.2298 (core#quote ", "if)) (.the.2298 (core#quote define-macro))))))) (core#begin (core#begin (core#de", "fine compile #undefined) (call-with-values (core#lambda () ((core#lambda () (cor", "e#begin (core#define .caddr.2454 (core#lambda (.x.2461) (car (cddr .x.2461)))) (", "core#begin (core#define .cadddr.2455 (core#lambda (.x.2462) (cadr (cddr .x.2462)", "))) (core#begin (core#define .max.2456 (core#lambda (.a.2463 .b.2464) (core#if (", "< .a.2463 .b.2464) .b.2464 .a.2463))) (core#begin (core#define .integer?.2457 (c", "ore#lambda (.n.2465) (core#if (number? .n.2465) (exact? .n.2465) #f))) (core#beg", "in (core#define .normalize.2458 ((core#lambda (.defs.2466) (core#begin (core#def", "ine .normalize.2467 (core#lambda (.e.2468) (core#if (symbol? .e.2468) (cons (cor", "e#quote ref) (cons .e.2468 (core#quote ()))) (core#if (not (pair? .e.2468)) (con", "s (core#quote quote) (cons .e.2468 (core#quote ()))) ((core#lambda (.key.2469) (", "core#if ((core#lambda (.it.2470) (core#if .it.2470 .it.2470 #f)) (eqv? .key.2469", " (core#quote core#quote))) (cons (core#quote quote) (cdr .e.2468)) (core#if ((co", "re#lambda (.it.2471) (core#if .it.2471 .it.2471 #f)) (eqv? .key.2469 (core#quote", " core#define))) ((core#lambda (.var.2472 .val.2473) (core#begin (.defs.2466 (con", "s .var.2472 (.defs.2466))) (cons (core#quote set!) (cons .var.2472 (cons (.norma", "lize.2467 .val.2473) (core#quote ())))))) (cadr .e.2468) (.caddr.2454 .e.2468)) ", "(core#if ((core#lambda (.it.2474) (core#if .it.2474 .it.2474 #f)) (eqv? .key.246", "9 (core#quote core#lambda))) ((core#lambda (.args.2475 .body.2476) (with-dynamic", "-environment (list (cons .defs.2466 (core#quote ()))) (core#lambda () ((core#lam", "bda (.body.2477) (core#if (null? (.defs.2466)) (cons (core#quote lambda) (cons .", "args.2475 (cons .body.2477 (core#quote ())))) (cons (core#quote lambda) (cons .a", "rgs.2475 (cons (cons (cons (core#quote lambda) (cons (.defs.2466) (cons .body.24", "77 (core#quote ())))) (append (map (core#lambda (._.2478) #f) (.defs.2466)) (cor", "e#quote ()))) (core#quote ())))))) (.normalize.2467 .body.2476))))) (cadr .e.246", "8) (.caddr.2454 .e.2468)) (core#if ((core#lambda (.it.2479) (core#if .it.2479 .i", "t.2479 #f)) (eqv? .key.2469 (core#quote core#set!))) (cons (core#quote set!) (ma", "p .normalize.2467 (cdr .e.2468))) (core#if ((core#lambda (.it.2480) (core#if .it", ".2480 .it.2480 #f)) (eqv? .key.2469 (core#quote core#if))) (cons (core#quote if)", " (map .normalize.2467 (cdr .e.2468))) (core#if ((core#lambda (.it.2481) (core#if", " .it.2481 .it.2481 #f)) (eqv? .key.2469 (core#quote core#begin))) (cons (core#qu", "ote begin) (map .normalize.2467 (cdr .e.2468))) (core#if #t (map .normalize.2467", " .e.2468) #undefined)))))))) (car .e.2468)))))) .normalize.2467)) (make-paramete", "r (core#quote ())))) (core#begin (core#define .transform.2459 ((core#lambda () (", "core#begin (core#define .uniq.2482 ((core#lambda (.n.2487) (core#lambda () (core", "#begin (core#set! .n.2487 (+ .n.2487 1)) (string->symbol (string-append \"$\" (num", "ber->string .n.2487)))))) 0)) (core#begin (core#define .transform-k.2483 (core#l", "ambda (.e.2488 .k.2489) ((core#lambda (.key.2490) (core#if ((core#lambda (.it.24", "91) (core#if .it.2491 .it.2491 ((core#lambda (.it.2492) (core#if .it.2492 .it.24", "92 ((core#lambda (.it.2493) (core#if .it.2493 .it.2493 #f)) (eqv? .key.2490 (cor", "e#quote quote))))) (eqv? .key.2490 (core#quote lambda))))) (eqv? .key.2490 (core", "#quote ref))) (.k.2489 (.transform-v.2486 .e.2488)) (core#if ((core#lambda (.it.", "2494) (core#if .it.2494 .it.2494 #f)) (eqv? .key.2490 (core#quote begin))) (.tra", "nsform-k.2483 (cadr .e.2488) (core#lambda (._.2495) (.transform-k.2483 (.caddr.2", "454 .e.2488) .k.2489))) (core#if ((core#lambda (.it.2496) (core#if .it.2496 .it.", "2496 #f)) (eqv? .key.2490 (core#quote set!))) (.transform-k.2483 (.caddr.2454 .e", ".2488) (core#lambda (.v.2497) (cons (core#quote set!) (cons (cadr .e.2488) (cons", " .v.2497 (cons (.k.2489 (core#quote (undefined))) (core#quote ()))))))) (core#if", " ((core#lambda (.it.2498) (core#if .it.2498 .it.2498 #f)) (eqv? .key.2490 (core#", "quote if))) ((core#lambda (.v.2499 .c.2500) (cons (cons (core#quote lambda) (con", "s (cons .c.2500 (core#quote ())) (cons (.transform-k.2483 (cadr .e.2488) (core#l", "ambda (.x.2501) (cons (core#quote if) (cons .x.2501 (cons (.transform-c.2485 (.c", "addr.2454 .e.2488) .c.2500) (cons (.transform-c.2485 (.cadddr.2455 .e.2488) .c.2", "500) (core#quote ()))))))) (core#quote ())))) (cons (cons (core#quote lambda) (c", "ons (cons .v.2499 (core#quote ())) (cons (.k.2489 (cons (core#quote ref) (cons .", "v.2499 (core#quote ())))) (core#quote ())))) (core#quote ())))) (.uniq.2482) (co", "ns (core#quote ref) (cons (.uniq.2482) (core#quote ())))) (core#if #t ((core#lam", "bda (.v.2502) ((core#lambda (.c.2503) ((core#lambda () (.transform-k.2483 (car .", "e.2488) (core#lambda (.f.2504) (.transform*-k.2484 (cdr .e.2488) (core#lambda (.", "args.2505) (cons .f.2504 (cons .c.2503 (append .args.2505 (core#quote ()))))))))", "))) (cons (core#quote lambda) (cons (cons .v.2502 (core#quote ())) (cons (.k.248", "9 (cons (core#quote ref) (cons .v.2502 (core#quote ())))) (core#quote ())))))) (", ".uniq.2482)) #undefined)))))) (car .e.2488)))) (core#begin (core#define .transfo", "rm*-k.2484 (core#lambda (.es.2506 .k.2507) (core#if (null? .es.2506) (.k.2507 (c", "ore#quote ())) (.transform-k.2483 (car .es.2506) (core#lambda (.x.2508) (.transf", "orm*-k.2484 (cdr .es.2506) (core#lambda (.xs.2509) (.k.2507 (cons .x.2508 .xs.25", "09))))))))) (core#begin (core#define .transform-c.2485 (core#lambda (.e.2510 .c.", "2511) ((core#lambda (.key.2512) (core#if ((core#lambda (.it.2513) (core#if .it.2", "513 .it.2513 ((core#lambda (.it.2514) (core#if .it.2514 .it.2514 ((core#lambda (", ".it.2515) (core#if .it.2515 .it.2515 #f)) (eqv? .key.2512 (core#quote quote)))))", " (eqv? .key.2512 (core#quote lambda))))) (eqv? .key.2512 (core#quote ref))) (con", "s .c.2511 (cons (.transform-v.2486 .e.2510) (core#quote ()))) (core#if ((core#la", "mbda (.it.2516) (core#if .it.2516 .it.2516 #f)) (eqv? .key.2512 (core#quote begi", "n))) (.transform-k.2483 (cadr .e.2510) (core#lambda (._.2517) (.transform-c.2485", " (.caddr.2454 .e.2510) .c.2511))) (core#if ((core#lambda (.it.2518) (core#if .it", ".2518 .it.2518 #f)) (eqv? .key.2512 (core#quote set!))) (.transform-k.2483 (.cad", "dr.2454 .e.2510) (core#lambda (.v.2519) (cons (core#quote set!) (cons (cadr .e.2", "510) (cons .v.2519 (cons (cons .c.2511 (cons (cons (core#quote undefined) (core#", "quote ())) (core#quote ()))) (core#quote ()))))))) (core#if ((core#lambda (.it.2", "520) (core#if .it.2520 .it.2520 #f)) (eqv? .key.2512 (core#quote if))) (core#if ", "(core#if (pair? .c.2511) (eq? (core#quote lambda) (car .c.2511)) #f) ((core#lamb", "da (.k.2521) (cons (cons (core#quote lambda) (cons (cons .k.2521 (core#quote ())", ") (cons (.transform-k.2483 (cadr .e.2510) (core#lambda (.x.2522) (cons (core#quo", "te if) (cons .x.2522 (cons (.transform-c.2485 (.caddr.2454 .e.2510) .k.2521) (co", "ns (.transform-c.2485 (.cadddr.2455 .e.2510) .k.2521) (core#quote ()))))))) (cor", "e#quote ())))) (cons .c.2511 (core#quote ())))) (cons (core#quote ref) (cons (.u", "niq.2482) (core#quote ())))) (.transform-k.2483 (cadr .e.2510) (core#lambda (.x.", "2523) (cons (core#quote if) (cons .x.2523 (cons (.transform-c.2485 (.caddr.2454 ", ".e.2510) .c.2511) (cons (.transform-c.2485 (.cadddr.2455 .e.2510) .c.2511) (core", "#quote ())))))))) (core#if #t (.transform-k.2483 (car .e.2510) (core#lambda (.f.", "2524) (.transform*-k.2484 (cdr .e.2510) (core#lambda (.args.2525) (cons .f.2524 ", "(cons .c.2511 (append .args.2525 (core#quote ())))))))) #undefined)))))) (car .e", ".2510)))) (core#begin (core#define .transform-v.2486 (core#lambda (.e.2526) ((co", "re#lambda (.key.2527) (core#if ((core#lambda (.it.2528) (core#if .it.2528 .it.25", "28 ((core#lambda (.it.2529) (core#if .it.2529 .it.2529 #f)) (eqv? .key.2527 (cor", "e#quote quote))))) (eqv? .key.2527 (core#quote ref))) .e.2526 (core#if ((core#la", "mbda (.it.2530) (core#if .it.2530 .it.2530 #f)) (eqv? .key.2527 (core#quote lamb", "da))) ((core#lambda (.k.2531) (cons (core#quote lambda) (cons (cons .k.2531 (app", "end (cadr .e.2526) (core#quote ()))) (cons (.transform-c.2485 (.caddr.2454 .e.25", "26) (cons (core#quote ref) (cons .k.2531 (core#quote ())))) (core#quote ()))))) ", "(.uniq.2482)) #undefined))) (car .e.2526)))) (core#lambda (.e.2532) ((core#lambd", "a (.k.2533) (cons (core#quote lambda) (cons (cons .k.2533 (core#quote ())) (cons", " (.transform-c.2485 .e.2532 (cons (core#quote ref) (cons .k.2533 (core#quote ())", "))) (core#quote ()))))) (.uniq.2482))))))))))) (core#begin (core#define .codegen", ".2460 ((core#lambda () (core#begin (core#define .lookup.2534 (core#lambda (.var.", "2546 .env.2547) ((core#lambda () (core#begin (core#define .up.2548 (core#lambda ", "(.depth.2549 .env.2550) (core#if (null? .env.2550) (cons (core#quote global) (co", "ns .var.2546 (core#quote ()))) ((core#lambda () (core#begin (core#define .loop.2", "551 (core#lambda (.index.2552 .binding.2553) (core#if (symbol? .binding.2553) (c", "ore#if (eq? .var.2546 .binding.2553) (cons (core#quote local) (cons .depth.2549 ", "(cons .index.2552 (core#quote ())))) (.up.2548 (+ .depth.2549 1) (cdr .env.2550)", ")) (core#if (null? .binding.2553) (.up.2548 (+ .depth.2549 1) (cdr .env.2550)) (", "core#if (eq? .var.2546 (car .binding.2553)) (cons (core#quote local) (cons .dept", "h.2549 (cons .index.2552 (core#quote ())))) (.loop.2551 (+ .index.2552 1) (cdr .", "binding.2553))))))) (.loop.2551 1 (car .env.2550)))))))) (.up.2548 0 .env.2547))", ")))) (core#begin (core#define .env.2535 (make-parameter (core#quote ()))) (core#", "begin (core#define .code.2536 (make-parameter (core#quote ()))) (core#begin (cor", "e#define .reps.2537 (make-parameter (core#quote ()))) (core#begin (core#define .", "objs.2538 (make-parameter (core#quote ()))) (core#begin (core#define .emit.2539 ", "(core#lambda (.inst.2554) (.code.2536 (cons .inst.2554 (.code.2536))))) (core#be", "gin (core#define .emit-irep.2540 (core#lambda (.irep.2555) ((core#lambda (.n.255", "6) (core#begin (.reps.2537 (cons .irep.2555 (.reps.2537))) .n.2556)) (length (.r", "eps.2537))))) (core#begin (core#define .emit-objs.2541 (core#lambda (.obj.2557) ", "((core#lambda (.n.2558) (core#begin (.objs.2538 (cons .obj.2557 (.objs.2538))) .", "n.2558)) (length (.objs.2538))))) (core#begin (core#define .make-label.2542 ((co", "re#lambda (.n.2559) (core#lambda () ((core#lambda (.m.2560) (core#begin (core#se", "t! .n.2559 (+ .n.2559 1)) .m.2560)) .n.2559))) 0)) (core#begin (core#define .emi", "t-label.2543 (core#lambda (.label.2561) (.code.2536 (cons .label.2561 (.code.253", "6))))) (core#begin (core#define .codegen-e.2544 (core#lambda (.e.2562) ((core#la", "mbda (.key.2563) (core#if ((core#lambda (.it.2564) (core#if .it.2564 .it.2564 ((", "core#lambda (.it.2565) (core#if .it.2565 .it.2565 ((core#lambda (.it.2566) (core", "#if .it.2566 .it.2566 ((core#lambda (.it.2567) (core#if .it.2567 .it.2567 #f)) (", "eqv? .key.2563 (core#quote undefined))))) (eqv? .key.2563 (core#quote quote)))))", " (eqv? .key.2563 (core#quote lambda))))) (eqv? .key.2563 (core#quote ref))) (.co", "degen-a.2545 .e.2562 0) (core#if ((core#lambda (.it.2568) (core#if .it.2568 .it.", "2568 #f)) (eqv? .key.2563 (core#quote set!))) (core#begin (.codegen-a.2545 (.cad", "dr.2454 .e.2562) 0) (core#begin ((core#lambda (.x.2569) ((core#lambda (.op.2570)", " ((core#lambda () (.emit.2539 (cons .op.2570 (cons (core#quote 0) (cdr .x.2569))", "))))) (core#if (eq? (core#quote global) (car .x.2569)) (core#quote GSET) (core#q", "uote LSET)))) (.lookup.2534 (cadr .e.2562) (.env.2535))) (.codegen-e.2544 (.cadd", "dr.2455 .e.2562)))) (core#if ((core#lambda (.it.2571) (core#if .it.2571 .it.2571", " #f)) (eqv? .key.2563 (core#quote if))) (core#begin (.codegen-a.2545 (cadr .e.25", "62) 0) ((core#lambda (.label.2572) (core#begin (.emit.2539 (cons (core#quote CON", "D) (cons (core#quote 0) (cons .label.2572 (core#quote ()))))) (core#begin (.code", "gen-e.2544 (.caddr.2454 .e.2562)) (core#begin (.emit-label.2543 .label.2572) (.c", "odegen-e.2544 (.cadddr.2455 .e.2562)))))) (.make-label.2542))) (core#if #t (core", "#begin ((core#lambda () (core#begin (core#define .loop.2573 (core#lambda (.i.257", "4 .e.2575) (core#if (null? .e.2575) #undefined (core#begin (.codegen-a.2545 (car", " .e.2575) .i.2574) (.loop.2573 (+ .i.2574 1) (cdr .e.2575)))))) (.loop.2573 0 .e", ".2562)))) (.emit.2539 (cons (core#quote CALL) (cons (- (length .e.2562) 1) (core", "#quote ()))))) #undefined))))) (car .e.2562)))) (core#begin (core#define .codege", "n-a.2545 (core#lambda (.e.2576 .i.2577) ((core#lambda (.key.2578) (core#if ((cor", "e#lambda (.it.2579) (core#if .it.2579 .it.2579 #f)) (eqv? .key.2578 (core#quote ", "ref))) ((core#lambda (.x.2580) ((core#lambda (.op.2581) ((core#lambda () (.emit.", "2539 (cons .op.2581 (cons .i.2577 (cdr .x.2580))))))) (core#if (eq? (core#quote ", "global) (car .x.2580)) (core#quote GREF) (core#quote LREF)))) (.lookup.2534 (cad", "r .e.2576) (.env.2535))) (core#if ((core#lambda (.it.2582) (core#if .it.2582 .it", ".2582 #f)) (eqv? .key.2578 (core#quote quote))) ((core#lambda (.obj.2583) (core#", "if (eq? #t .obj.2583) (.emit.2539 (cons (core#quote LOADT) (cons .i.2577 (core#q", "uote ())))) (core#if (eq? #f .obj.2583) (.emit.2539 (cons (core#quote LOADF) (co", "ns .i.2577 (core#quote ())))) (core#if (null? .obj.2583) (.emit.2539 (cons (core", "#quote LOADN) (cons .i.2577 (core#quote ())))) (core#if (eq? #undefined .obj.258", "3) (.emit.2539 (cons (core#quote LOADU) (cons .i.2577 (core#quote ())))) (core#i", "f (core#if (.integer?.2457 .obj.2583) (<= -128 .obj.2583 127) #f) (.emit.2539 (c", "ons (core#quote LOADI) (cons .i.2577 (cons .obj.2583 (core#quote ()))))) ((core#", "lambda (.n.2584) (.emit.2539 (cons (core#quote LOAD) (cons .i.2577 (cons .n.2584", " (core#quote ())))))) (emit-obj .obj.2583)))))))) (cadr .e.2576)) (core#if ((cor", "e#lambda (.it.2585) (core#if .it.2585 .it.2585 #f)) (eqv? .key.2578 (core#quote ", "undefined))) (.emit.2539 (cons (core#quote LOADU) (cons .i.2577 (core#quote ()))", ")) (core#if ((core#lambda (.it.2586) (core#if .it.2586 .it.2586 #f)) (eqv? .key.", "2578 (core#quote lambda))) ((core#lambda (.frame-size.2587 .argc-varg.2588) ((co", "re#lambda (.irep.2589) ((core#lambda (.n.2590) (.emit.2539 (cons (core#quote PRO", "C) (cons .i.2577 (cons .n.2590 (core#quote ())))))) (.emit-irep.2540 .irep.2589)", ")) (with-dynamic-environment (list (cons .code.2536 (core#quote ())) (cons .env.", "2535 (cons (cadr .e.2576) (.env.2535))) (cons .reps.2537 (core#quote ())) (cons ", ".objs.2538 (core#quote ()))) (core#lambda () (core#begin (.codegen-e.2544 (.cadd", "r.2454 .e.2576)) (list (reverse (.code.2536)) (reverse (.reps.2537)) (reverse (.", "objs.2538)) .argc-varg.2588 .frame-size.2587)))))) ((core#lambda () (core#begin ", "(core#define .loop.2591 (core#lambda (.e.2592) ((core#lambda (.key.2593) (core#i", "f ((core#lambda (.it.2594) (core#if .it.2594 .it.2594 ((core#lambda (.it.2595) (", "core#if .it.2595 .it.2595 ((core#lambda (.it.2596) (core#if .it.2596 .it.2596 ((", "core#lambda (.it.2597) (core#if .it.2597 .it.2597 #f)) (eqv? .key.2593 (core#quo", "te undefined))))) (eqv? .key.2593 (core#quote quote))))) (eqv? .key.2593 (core#q", "uote lambda))))) (eqv? .key.2593 (core#quote ref))) 1 (core#if ((core#lambda (.i", "t.2598) (core#if .it.2598 .it.2598 #f)) (eqv? .key.2593 (core#quote if))) (.max.", "2456 (.loop.2591 (.caddr.2454 .e.2592)) (.loop.2591 (.cadddr.2455 .e.2592))) (co", "re#if ((core#lambda (.it.2599) (core#if .it.2599 .it.2599 #f)) (eqv? .key.2593 (", "core#quote set!))) (.loop.2591 (.cadddr.2455 .e.2592)) (core#if #t (+ 1 (length ", ".e.2592)) #undefined))))) (car .e.2592)))) (.loop.2591 (.caddr.2454 .e.2576)))))", " ((core#lambda () (core#begin (core#define .loop.2600 (core#lambda (.args.2601 .", "c.2602) (core#if (symbol? .args.2601) (cons .c.2602 #t) (core#if (null? .args.26", "01) (cons .c.2602 #f) (.loop.2600 (cdr .args.2601) (+ 1 .c.2602)))))) (.loop.260", "0 (cadr .e.2576) 0))))) #undefined))))) (car .e.2576)))) (core#lambda (.e.2603) ", "(with-dynamic-environment (list (cons .code.2536 (core#quote ())) (cons .env.253", "5 (core#quote ())) (cons .reps.2537 (core#quote ())) (cons .objs.2538 (core#quot", "e ()))) (core#lambda () (core#begin (.codegen-e.2544 .e.2603) (car (.reps.2537))", "))))))))))))))))))) (core#lambda (.e.2604) (.codegen.2460 (.transform.2459 (.nor", "malize.2458 .e.2604)))))))))))))) (core#lambda (.compile.2605) (core#set! compil", "e .compile.2605)))) (core#define eval (core#lambda (.expr.2606 . .env.2607) (loa", "d (expand .expr.2606 (core#if (null? .env.2607) default-environment (car .env.26", "07)))))))))", }; #endif #if PIC_USE_LIBRARY static const char boot_library_rom[][80] = { "(core#begin (core#define current-library #undefined) (core#begin (core#define fi", "nd-library #undefined) (core#begin (core#define make-library #undefined) (core#b", "egin (core#define library-environment #undefined) (core#begin (core#define libra", "ry-exports #undefined) (core#begin (core#define library-import #undefined) (core", "#begin (core#define library-export #undefined) (call-with-values (core#lambda ()", " ((core#lambda () (core#begin (core#define .mangle.2608 (core#lambda (.name.2617", ") (core#begin (core#if (null? .name.2617) (error \"library name should be a list ", "of at least one symbols\" .name.2617) #undefined) (core#begin (core#define .->str", "ing.2618 (core#lambda (.n.2620) (core#if (symbol? .n.2620) ((core#lambda (.str.2", "621) (core#begin (string-for-each (core#lambda (.c.2622) (core#if ((core#lambda ", "(.it.2623) (core#if .it.2623 .it.2623 ((core#lambda (.it.2624) (core#if .it.2624", " .it.2624 #f)) (char=? .c.2622 #\\:)))) (char=? .c.2622 #\\.)) (error \"elements of", " library name may not contain '.' or ':'\" .n.2620) #undefined)) .str.2621) .str.", "2621)) (symbol->string .n.2620)) (core#if (core#if (number? .n.2620) (core#if (e", "xact? .n.2620) (<= 0 .n.2620) #f) #f) (number->string .n.2620) (error \"symbol or", " non-negative integer is required\" .n.2620))))) (core#begin (core#define .join.2", "619 (core#lambda (.strs.2625 .delim.2626) ((core#lambda () (core#begin (core#def", "ine .loop.2627 (core#lambda (.res.2628 .strs.2629) (core#if (null? .strs.2629) .", "res.2628 (.loop.2627 (string-append .res.2628 .delim.2626 (car .strs.2629)) (cdr", " .strs.2629))))) (.loop.2627 (car .strs.2625) (cdr .strs.2625))))))) (core#if (s", "ymbol? .name.2617) .name.2617 (string->symbol (.join.2619 (map .->string.2618 .n", "ame.2617) \".\")))))))) (core#begin (core#define .current-library.2609 (make-param", "eter (core#quote (picrin user)) .mangle.2608)) (core#begin (core#define .*librar", "ies*.2610 (make-dictionary)) (core#begin (core#define .find-library.2611 (core#l", "ambda (.name.2630) (dictionary-has? .*libraries*.2610 (.mangle.2608 .name.2630))", ")) (core#begin (core#define .make-library.2612 (core#lambda (.name.2631) ((core#", "lambda (.name.2632) ((core#lambda (.env.2633 .exports.2634) (core#begin (set-ide", "ntifier! (core#quote define-library) (core#quote define-library) .env.2633) (cor", "e#begin (set-identifier! (core#quote import) (core#quote import) .env.2633) (cor", "e#begin (set-identifier! (core#quote export) (core#quote export) .env.2633) (cor", "e#begin (set-identifier! (core#quote cond-expand) (core#quote cond-expand) .env.", "2633) (dictionary-set! .*libraries*.2610 .name.2632 (cons .env.2633 .exports.263", "4))))))) (make-environment (string->symbol (string-append (symbol->string .name.", "2632) \":\"))) (make-dictionary))) (.mangle.2608 .name.2631)))) (core#begin (core#", "define .library-environment.2613 (core#lambda (.name.2635) (car (dictionary-ref ", ".*libraries*.2610 (.mangle.2608 .name.2635))))) (core#begin (core#define .librar", "y-exports.2614 (core#lambda (.name.2636) (cdr (dictionary-ref .*libraries*.2610 ", "(.mangle.2608 .name.2636))))) (core#begin (core#define .library-import.2615 (cor", "e#lambda (.name.2637 .sym.2638 .alias.2639) ((core#lambda (.uid.2640) ((core#lam", "bda (.env.2641) (set-identifier! .alias.2639 .uid.2640 .env.2641)) (.library-env", "ironment.2613 (.current-library.2609)))) (dictionary-ref (.library-exports.2614 ", ".name.2637) .sym.2638)))) (core#begin (core#define .library-export.2616 (core#la", "mbda (.sym.2642 .alias.2643) ((core#lambda (.env.2644 .exports.2645) (dictionary", "-set! .exports.2645 .alias.2643 (find-identifier .sym.2642 .env.2644))) (.librar", "y-environment.2613 (.current-library.2609)) (.library-exports.2614 (.current-lib", "rary.2609))))) (core#begin ((core#lambda (.define-transformer.2646) (core#begin ", "(.define-transformer.2646 (core#quote define-library) (core#lambda (.form.2647 .", "_.2648) ((core#lambda (.name.2649 .body.2650) (core#begin ((core#lambda (.it.265", "1) (core#if .it.2651 .it.2651 ((core#lambda (.it.2652) (core#if .it.2652 .it.265", "2 #f)) (.make-library.2612 .name.2649)))) (.find-library.2611 .name.2649)) (with", "-dynamic-environment (list (cons .current-library.2609 .name.2649)) (core#lambda", " () (for-each (core#lambda (.expr.2653) (eval .expr.2653 .name.2649)) .body.2650", "))))) (cadr .form.2647) (cddr .form.2647)))) (core#begin (.define-transformer.26", "46 (core#quote cond-expand) (core#lambda (.form.2654 ._.2655) ((core#lambda (.te", "st.2656) (core#begin (core#set! .test.2656 (core#lambda (.form.2657) ((core#lamb", "da (.it.2658) (core#if .it.2658 .it.2658 ((core#lambda (.it.2659) (core#if .it.2", "659 .it.2659 ((core#lambda (.it.2660) (core#if .it.2660 .it.2660 #f)) (core#if (", "pair? .form.2657) ((core#lambda (.key.2661) (core#if ((core#lambda (.it.2662) (c", "ore#if .it.2662 .it.2662 #f)) (eqv? .key.2661 (core#quote library))) (.find-libr", "ary.2611 (cadr .form.2657)) (core#if ((core#lambda (.it.2663) (core#if .it.2663 ", ".it.2663 #f)) (eqv? .key.2661 (core#quote not))) (not (.test.2656 (cadr .form.26", "57))) (core#if ((core#lambda (.it.2664) (core#if .it.2664 .it.2664 #f)) (eqv? .k", "ey.2661 (core#quote and))) ((core#lambda () (core#begin (core#define .loop.2665 ", "(core#lambda (.form.2666) ((core#lambda (.it.2667) (core#if .it.2667 .it.2667 ((", "core#lambda (.it.2668) (core#if .it.2668 .it.2668 #f)) (core#if (.test.2656 (car", " .form.2666)) (.loop.2665 (cdr .form.2666)) #f)))) (null? .form.2666)))) (.loop.", "2665 (cdr .form.2657))))) (core#if ((core#lambda (.it.2669) (core#if .it.2669 .i", "t.2669 #f)) (eqv? .key.2661 (core#quote or))) ((core#lambda () (core#begin (core", "#define .loop.2670 (core#lambda (.form.2671) (core#if (pair? .form.2671) ((core#", "lambda (.it.2672) (core#if .it.2672 .it.2672 ((core#lambda (.it.2673) (core#if .", "it.2673 .it.2673 #f)) (.loop.2670 (cdr .form.2671))))) (.test.2656 (car .form.26", "71))) #f))) (.loop.2670 (cdr .form.2657))))) (core#if #t #f #undefined)))))) (ca", "r .form.2657)) #f)))) (core#if (symbol? .form.2657) (memq .form.2657 (features))", " #f)))) (eq? .form.2657 (core#quote else))))) ((core#lambda () (core#begin (core", "#define .loop.2674 (core#lambda (.clauses.2675) (core#if (null? .clauses.2675) #", "undefined (core#if (.test.2656 (caar .clauses.2675)) (cons (make-identifier (cor", "e#quote begin) default-environment) (append (cdar .clauses.2675) (core#quote ())", ")) (.loop.2674 (cdr .clauses.2675)))))) (.loop.2674 (cdr .form.2654))))))) #unde", "fined))) (core#begin (.define-transformer.2646 (core#quote import) (core#lambda ", "(.form.2676 ._.2677) ((core#lambda (.caddr.2678 .prefix.2679 .getlib.2680) ((cor", "e#lambda (.extract.2681 .collect.2682) (core#begin (core#set! .extract.2681 (cor", "e#lambda (.spec.2683) ((core#lambda (.key.2684) (core#if ((core#lambda (.it.2685", ") (core#if .it.2685 .it.2685 ((core#lambda (.it.2686) (core#if .it.2686 .it.2686", " ((core#lambda (.it.2687) (core#if .it.2687 .it.2687 ((core#lambda (.it.2688) (c", "ore#if .it.2688 .it.2688 #f)) (eqv? .key.2684 (core#quote except))))) (eqv? .key", ".2684 (core#quote prefix))))) (eqv? .key.2684 (core#quote rename))))) (eqv? .key", ".2684 (core#quote only))) (.extract.2681 (cadr .spec.2683)) (core#if #t (.getlib", ".2680 .spec.2683) #undefined))) (car .spec.2683)))) (core#begin (core#set! .coll", "ect.2682 (core#lambda (.spec.2689) ((core#lambda (.key.2690) (core#if ((core#lam", "bda (.it.2691) (core#if .it.2691 .it.2691 #f)) (eqv? .key.2690 (core#quote only)", ")) ((core#lambda (.alist.2692) (map (core#lambda (.var.2693) (assq .var.2693 .al", "ist.2692)) (cddr .spec.2689))) (.collect.2682 (cadr .spec.2689))) (core#if ((cor", "e#lambda (.it.2694) (core#if .it.2694 .it.2694 #f)) (eqv? .key.2690 (core#quote ", "rename))) ((core#lambda (.alist.2695 .renames.2696) (map (core#lambda (.s.2697) ", "((core#lambda (.it.2698) (core#if .it.2698 .it.2698 ((core#lambda (.it.2699) (co", "re#if .it.2699 .it.2699 #f)) .s.2697))) (assq (car .s.2697) .renames.2696))) .al", "ist.2695)) (.collect.2682 (cadr .spec.2689)) (map (core#lambda (.x.2700) (cons (", "car .x.2700) (cadr .x.2700))) (cddr .spec.2689))) (core#if ((core#lambda (.it.27", "01) (core#if .it.2701 .it.2701 #f)) (eqv? .key.2690 (core#quote prefix))) ((core", "#lambda (.alist.2702) (map (core#lambda (.s.2703) (cons (.prefix.2679 (.caddr.26", "78 .spec.2689) (car .s.2703)) (cdr .s.2703))) .alist.2702)) (.collect.2682 (cadr", " .spec.2689))) (core#if ((core#lambda (.it.2704) (core#if .it.2704 .it.2704 #f))", " (eqv? .key.2690 (core#quote except))) ((core#lambda (.alist.2705) ((core#lambda", " () (core#begin (core#define .loop.2706 (core#lambda (.alist.2707) (core#if (nul", "l? .alist.2707) (core#quote ()) (core#if (memq (caar .alist.2707) (cddr .spec.26", "89)) (.loop.2706 (cdr .alist.2707)) (cons (car .alist.2707) (.loop.2706 (cdr .al", "ist.2707))))))) (.loop.2706 .alist.2705))))) (.collect.2682 (cadr .spec.2689))) ", "(core#if #t (dictionary-map (core#lambda (.x.2708) (cons .x.2708 .x.2708)) (.lib", "rary-exports.2614 (.getlib.2680 .spec.2689))) #undefined)))))) (car .spec.2689))", ")) ((core#lambda (.import.2709) (core#begin (core#set! .import.2709 (core#lambda", " (.spec.2710) ((core#lambda (.lib.2711 .alist.2712) (for-each (core#lambda (.slo", "t.2713) (.library-import.2615 .lib.2711 (cdr .slot.2713) (car .slot.2713))) .ali", "st.2712)) (.extract.2681 .spec.2710) (.collect.2682 .spec.2710)))) (for-each .im", "port.2709 (cdr .form.2676)))) #undefined)))) #undefined #undefined)) (core#lambd", "a (.x.2714) (car (cdr (cdr .x.2714)))) (core#lambda (.prefix.2715 .symbol.2716) ", "(string->symbol (string-append (symbol->string .prefix.2715) (symbol->string .sy", "mbol.2716)))) (core#lambda (.name.2717) (core#if (.find-library.2611 .name.2717)", " .name.2717 (error \"library not found\" .name.2717)))))) (.define-transformer.264", "6 (core#quote export) (core#lambda (.form.2718 ._.2719) ((core#lambda (.collect.", "2720 .export.2721) (core#begin (core#set! .collect.2720 (core#lambda (.spec.2722", ") (core#if (symbol? .spec.2722) (cons .spec.2722 .spec.2722) (core#if (core#if (", "list? .spec.2722) (core#if (= (length .spec.2722) 3) (eq? (car .spec.2722) (core", "#quote rename)) #f) #f) (cons (list-ref .spec.2722 1) (list-ref .spec.2722 2)) (", "error \"malformed export\"))))) (core#begin (core#set! .export.2721 (core#lambda (", ".spec.2723) ((core#lambda (.slot.2724) (.library-export.2616 (car .slot.2724) (c", "dr .slot.2724))) (.collect.2720 .spec.2723)))) (for-each .export.2721 (cdr .form", ".2718))))) #undefined #undefined))))))) (core#lambda (.name.2725 .macro.2726) (d", "ictionary-set! (macro-objects) .name.2725 .macro.2726))) (core#begin ((core#lamb", "da () (core#begin (.make-library.2612 (core#quote (picrin base))) (core#begin (s", "et-car! (dictionary-ref .*libraries*.2610 (.mangle.2608 (core#quote (picrin base", ")))) default-environment) (core#begin ((core#lambda (.exports.2727) ((core#lambd", "a (.export-keyword.2728) ((core#lambda () (core#begin (for-each .export-keyword.", "2728 (core#quote (define lambda quote set! if begin define-macro let let* letrec", " letrec* let-values let*-values define-values quasiquote unquote unquote-splicin", "g and or cond case else => do when unless parameterize define-record-type))) (co", "re#begin (.export-keyword.2728 (core#quote boolean?)) (dictionary-for-each .expo", "rt-keyword.2728 (global-objects))))))) (core#lambda (.keyword.2729) (dictionary-", "set! .exports.2727 .keyword.2729 .keyword.2729)))) (.library-exports.2614 (core#", "quote (picrin base)))) (core#begin (core#set! eval ((core#lambda (.e.2730) (core", "#lambda (.expr.2731 . .lib.2732) ((core#lambda (.lib.2733) (with-dynamic-environ", "ment (list (cons .current-library.2609 .lib.2733)) (core#lambda () (.e.2730 .exp", "r.2731 (.library-environment.2613 .lib.2733))))) (core#if (null? .lib.2732) (.cu", "rrent-library.2609) (car .lib.2732))))) eval)) (.make-library.2612 (core#quote (", "picrin user))))))))) (values .current-library.2609 .find-library.2611 .make-libr", "ary.2612 .library-environment.2613 .library-exports.2614 .library-import.2615 .l", "ibrary-export.2616))))))))))))))) (core#lambda (.current-library.2734 .find-libr", "ary.2735 .make-library.2736 .library-environment.2737 .library-exports.2738 .lib", "rary-import.2739 .library-export.2740) (core#begin (core#set! current-library .c", "urrent-library.2734) (core#begin (core#set! find-library .find-library.2735) (co", "re#begin (core#set! make-library .make-library.2736) (core#begin (core#set! libr", "ary-environment .library-environment.2737) (core#begin (core#set! library-export", "s .library-exports.2738) (core#begin (core#set! library-import .library-import.2", "739) (core#set! library-export .library-export.2740))))))))))))))))", }; #endif void pic_boot(pic_state *PIC_UNUSED(pic)) { #if PIC_USE_EVAL pic_load_native(pic, &boot_compile_rom[0][0]); #endif #if PIC_USE_LIBRARY pic_load_native(pic, &boot_library_rom[0][0]); #endif }