picrin/lib/ext/boot.c

796 lines
64 KiB
C
Raw Normal View History

2016-03-03 04:59:07 -05:00
#include "picrin.h"
#include "picrin/extra.h"
2017-04-04 06:00:37 -04:00
#if PIC_USE_EVAL
2017-04-04 01:54:58 -04:00
static const char boot_compile_rom[][80] = {
2017-04-05 03:18:00 -04:00
"(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",
2017-04-12 11:02:25 -04:00
"77 (core#quote ())))) (append (map (core#lambda (._.2478) (core#quote '#f)) (.de",
"fs.2466)) (core#quote ()))) (core#quote ())))))) (.normalize.2467 .body.2476))))",
") (cadr .e.2468) (.caddr.2454 .e.2468)) (core#if ((core#lambda (.it.2479) (core#",
"if .it.2479 .it.2479 #f)) (eqv? .key.2469 (core#quote core#set!))) (cons (core#q",
"uote set!) (cons (cadr .e.2468) (cons (.normalize.2467 (.caddr.2454 .e.2468)) (c",
"ore#quote ())))) (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.248",
"1 #f)) (eqv? .key.2469 (core#quote core#begin))) (cons (core#quote begin) (map .",
"normalize.2467 (cdr .e.2468))) (core#if #t (map .normalize.2467 .e.2468) #undefi",
"ned)))))))) (car .e.2468)))))) .normalize.2467)) (make-parameter (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 \"$\" (number->string .n.24",
"87)))))) 0)) (core#begin (core#define .transform-k.2483 (core#lambda (.e.2488 .k",
".2489) ((core#lambda (.key.2490) (core#if ((core#lambda (.it.2491) (core#if .it.",
"2491 .it.2491 ((core#lambda (.it.2492) (core#if .it.2492 .it.2492 ((core#lambda ",
"(.it.2493) (core#if .it.2493 .it.2493 #f)) (eqv? .key.2490 (core#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 .i",
"t.2494 .it.2494 #f)) (eqv? .key.2490 (core#quote begin))) (.transform-k.2483 (ca",
"dr .e.2488) (core#lambda (._.2495) (.transform-k.2483 (.caddr.2454 .e.2488) .k.2",
"489))) (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#lamb",
"da (.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))) ((cor",
"e#lambda (.v.2499 .c.2500) (cons (cons (core#quote lambda) (cons (cons .c.2500 (",
"core#quote ())) (cons (.transform-k.2483 (cadr .e.2488) (core#lambda (.x.2501) (",
"cons (core#quote if) (cons .x.2501 (cons (.transform-c.2485 (.caddr.2454 .e.2488",
") (cons (core#quote ref) (cons .c.2500 (core#quote ())))) (cons (.transform-c.24",
"85 (.cadddr.2455 .e.2488) (cons (core#quote ref) (cons .c.2500 (core#quote ())))",
") (core#quote ()))))))) (core#quote ())))) (cons (cons (core#quote lambda) (cons",
" (cons .v.2499 (core#quote ())) (cons (.k.2489 (cons (core#quote ref) (cons .v.2",
"499 (core#quote ())))) (core#quote ())))) (core#quote ())))) (.uniq.2482) (.uniq",
".2482)) (core#if #t ((core#lambda (.v.2502) ((core#lambda (.c.2503) ((core#lambd",
"a () (.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 .ar",
"gs.2505 (core#quote ()))))))))))) (cons (core#quote lambda) (cons (cons .v.2502 ",
"(core#quote ())) (cons (.k.2489 (cons (core#quote ref) (cons .v.2502 (core#quote",
" ())))) (core#quote ())))))) (.uniq.2482)) #undefined)))))) (car .e.2488)))) (co",
"re#begin (core#define .transform*-k.2484 (core#lambda (.es.2506 .k.2507) (core#i",
"f (null? .es.2506) (.k.2507 (core#quote ())) (.transform-k.2483 (car .es.2506) (",
"core#lambda (.x.2508) (.transform*-k.2484 (cdr .es.2506) (core#lambda (.xs.2509)",
" (.k.2507 (cons .x.2508 .xs.2509))))))))) (core#begin (core#define .transform-c.",
"2485 (core#lambda (.e.2510 .c.2511) ((core#lambda (.key.2512) (core#if ((core#la",
"mbda (.it.2513) (core#if .it.2513 .it.2513 ((core#lambda (.it.2514) (core#if .it",
".2514 .it.2514 ((core#lambda (.it.2515) (core#if .it.2515 .it.2515 #f)) (eqv? .k",
"ey.2512 (core#quote quote))))) (eqv? .key.2512 (core#quote lambda))))) (eqv? .ke",
"y.2512 (core#quote ref))) (cons .c.2511 (cons (.transform-v.2486 .e.2510) (core#",
"quote ()))) (core#if ((core#lambda (.it.2516) (core#if .it.2516 .it.2516 #f)) (e",
"qv? .key.2512 (core#quote begin))) (.transform-k.2483 (cadr .e.2510) (core#lambd",
"a (._.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 se",
"t!))) (.transform-k.2483 (.caddr.2454 .e.2510) (core#lambda (.v.2519) (cons (cor",
"e#quote set!) (cons (cadr .e.2510) (cons .v.2519 (cons (cons .c.2511 (cons (cons",
" (core#quote undefined) (core#quote ())) (core#quote ()))) (core#quote ())))))))",
" (core#if ((core#lambda (.it.2520) (core#if .it.2520 .it.2520 #f)) (eqv? .key.25",
"12 (core#quote if))) (core#if (core#if (pair? .c.2511) (eq? (core#quote lambda) ",
"(car .c.2511)) #f) ((core#lambda (.k.2521) (cons (cons (core#quote lambda) (cons",
" (cons .k.2521 (core#quote ())) (cons (.transform-k.2483 (cadr .e.2510) (core#la",
"mbda (.x.2522) (cons (core#quote if) (cons .x.2522 (cons (.transform-c.2485 (.ca",
"ddr.2454 .e.2510) (cons (core#quote ref) (cons .k.2521 (core#quote ())))) (cons ",
"(.transform-c.2485 (.cadddr.2455 .e.2510) (cons (core#quote ref) (cons .k.2521 (",
"core#quote ())))) (core#quote ()))))))) (core#quote ())))) (cons .c.2511 (core#q",
"uote ())))) (.uniq.2482)) (.transform-k.2483 (cadr .e.2510) (core#lambda (.x.252",
"3) (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#qu",
"ote ())))))))) (core#if #t (.transform-k.2483 (car .e.2510) (core#lambda (.f.252",
"4) (.transform*-k.2484 (cdr .e.2510) (core#lambda (.args.2525) (cons .f.2524 (co",
"ns .c.2511 (append .args.2525 (core#quote ())))))))) #undefined)))))) (car .e.25",
"10)))) (core#begin (core#define .transform-v.2486 (core#lambda (.e.2526) ((core#",
"lambda (.key.2527) (core#if ((core#lambda (.it.2528) (core#if .it.2528 .it.2528 ",
"((core#lambda (.it.2529) (core#if .it.2529 .it.2529 #f)) (eqv? .key.2527 (core#q",
"uote quote))))) (eqv? .key.2527 (core#quote ref))) .e.2526 (core#if ((core#lambd",
"a (.it.2530) (core#if .it.2530 .it.2530 #f)) (eqv? .key.2527 (core#quote lambda)",
")) ((core#lambda (.k.2531) (cons (core#quote lambda) (cons (cons .k.2531 (cadr .",
"e.2526)) (cons (.transform-c.2485 (.caddr.2454 .e.2526) (cons (core#quote ref) (",
"cons .k.2531 (core#quote ())))) (core#quote ()))))) (.uniq.2482)) #undefined))) ",
"(car .e.2526)))) (core#lambda (.e.2532) ((core#lambda (.k.2533) (cons (core#quot",
"e lambda) (cons (cons .k.2533 (core#quote ())) (cons (.transform-c.2485 .e.2532 ",
"(cons (core#quote ref) (cons .k.2533 (core#quote ())))) (core#quote ()))))) (.un",
"iq.2482))))))))))) (core#begin (core#define .codegen.2460 ((core#lambda () (core",
"#begin (core#define .lookup.2534 (core#lambda (.var.2546 .env.2547) ((core#lambd",
"a () (core#begin (core#define .up.2548 (core#lambda (.depth.2549 .env.2550) (cor",
"e#if (null? .env.2550) (cons (core#quote global) (cons .var.2546 (core#quote ())",
")) ((core#lambda () (core#begin (core#define .loop.2551 (core#lambda (.index.255",
"2 .binding.2553) (core#if (symbol? .binding.2553) (core#if (eq? .var.2546 .bindi",
"ng.2553) (cons (core#quote local) (cons .depth.2549 (cons .index.2552 (core#quot",
"e ())))) (.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 .depth.2549 (cons .index.2552 (co",
"re#quote ())))) (.loop.2551 (+ .index.2552 1) (cdr .binding.2553))))))) (.loop.2",
"551 1 (car .env.2550)))))))) (.up.2548 0 .env.2547)))))) (core#begin (core#defin",
"e .env.2535 (make-parameter (core#quote ()))) (core#begin (core#define .code.253",
"6 (make-parameter (core#quote ()))) (core#begin (core#define .reps.2537 (make-pa",
"rameter (core#quote ()))) (core#begin (core#define .objs.2538 (make-parameter (c",
"ore#quote ()))) (core#begin (core#define .emit.2539 (core#lambda (.inst.2554) (.",
"code.2536 (cons .inst.2554 (.code.2536))))) (core#begin (core#define .emit-irep.",
"2540 (core#lambda (.irep.2555) ((core#lambda (.n.2556) (core#begin (.reps.2537 (",
"cons .irep.2555 (.reps.2537))) .n.2556)) (length (.reps.2537))))) (core#begin (c",
"ore#define .emit-obj.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 ((core#lambda (.n.2559) (core#lam",
"bda () ((core#lambda (.m.2560) (core#begin (core#set! .n.2559 (+ .n.2559 1)) .m.",
"2560)) .n.2559))) 0)) (core#begin (core#define .emit-label.2543 (core#lambda (.l",
"abel.2561) (.code.2536 (cons .label.2561 (.code.2536))))) (core#begin (core#defi",
"ne .codegen-e.2544 (core#lambda (.e.2562) ((core#lambda (.key.2563) (core#if ((c",
"ore#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 un",
"defined))))) (eqv? .key.2563 (core#quote quote))))) (eqv? .key.2563 (core#quote ",
"lambda))))) (eqv? .key.2563 (core#quote ref))) (.codegen-a.2545 .e.2562 0) (core",
"#if ((core#lambda (.it.2568) (core#if .it.2568 .it.2568 #f)) (eqv? .key.2563 (co",
"re#quote set!))) (core#begin (.codegen-a.2545 (.caddr.2454 .e.2562) 0) (core#beg",
"in ((core#lambda (.x.2569) (core#if (eq? (core#quote global) (car .x.2569)) ((co",
"re#lambda (.i.2570) (.emit.2539 (cons (core#quote GSET) (cons (core#quote 0) (co",
"ns .i.2570 (core#quote ())))))) (.emit-obj.2541 (cadr .x.2569))) (.emit.2539 (co",
"ns (core#quote LSET) (cons (core#quote 0) (cdr .x.2569)))))) (.lookup.2534 (cadr",
" .e.2562) (.env.2535))) (.codegen-e.2544 (.cadddr.2455 .e.2562)))) (core#if ((co",
"re#lambda (.it.2571) (core#if .it.2571 .it.2571 #f)) (eqv? .key.2563 (core#quote",
" if))) (core#begin (.codegen-a.2545 (cadr .e.2562) 0) ((core#lambda (.label.2572",
") (core#begin (.emit.2539 (cons (core#quote COND) (cons (core#quote 0) (cons .la",
"bel.2572 (core#quote ()))))) (core#begin (.codegen-e.2544 (.caddr.2454 .e.2562))",
" (core#begin (.emit-label.2543 .label.2572) (.codegen-e.2544 (.cadddr.2455 .e.25",
"62)))))) (.make-label.2542))) (core#if #t (core#begin ((core#lambda () (core#beg",
"in (core#define .loop.2573 (core#lambda (.i.2574 .e.2575) (core#if (null? .e.257",
"5) #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))))) (c",
"ar .e.2562)))) (core#begin (core#define .codegen-a.2545 (core#lambda (.e.2576 .i",
".2577) ((core#lambda (.key.2578) (core#if ((core#lambda (.it.2579) (core#if .it.",
"2579 .it.2579 #f)) (eqv? .key.2578 (core#quote ref))) ((core#lambda (.x.2580) (c",
"ore#if (eq? (core#quote global) (car .x.2580)) ((core#lambda (.n.2581) (.emit.25",
"39 (cons (core#quote GREF) (cons .i.2577 (cons .n.2581 (core#quote ())))))) (.em",
"it-obj.2541 (cadr .x.2580))) (.emit.2539 (cons (core#quote LREF) (cons .i.2577 (",
"cdr .x.2580)))))) (.lookup.2534 (cadr .e.2576) (.env.2535))) (core#if ((core#lam",
"bda (.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 (cor",
"e#quote LOADT) (cons .i.2577 (core#quote ())))) (core#if (eq? #f .obj.2583) (.em",
"it.2539 (cons (core#quote LOADF) (cons .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.2583) (.emit.2539 (cons (core#quote LOADU) (con",
"s .i.2577 (core#quote ())))) (core#if (core#if (.integer?.2457 .obj.2583) (<= -1",
"27 .obj.2583 127) #f) (.emit.2539 (cons (core#quote LOADI) (cons .i.2577 (cons .",
"obj.2583 (core#quote ()))))) ((core#lambda (.n.2584) (.emit.2539 (cons (core#quo",
"te LOAD) (cons .i.2577 (cons .n.2584 (core#quote ())))))) (.emit-obj.2541 .obj.2",
"583)))))))) (cadr .e.2576)) (core#if ((core#lambda (.it.2585) (core#if .it.2585 ",
".it.2585 #f)) (eqv? .key.2578 (core#quote undefined))) (.emit.2539 (cons (core#q",
"uote 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#lamb",
"da (.frame-size.2587 .argc-varg.2588) ((core#lambda (.irep.2589) ((core#lambda (",
".n.2590) (.emit.2539 (cons (core#quote PROC) (cons .i.2577 (cons .n.2590 (core#q",
"uote ())))))) (.emit-irep.2540 .irep.2589))) (with-dynamic-environment (list (co",
"ns .code.2536 (core#quote ())) (cons .env.2535 (cons (cadr .e.2576) (.env.2535))",
") (cons .reps.2537 (core#quote ())) (cons .objs.2538 (core#quote ()))) (core#lam",
"bda () (core#begin (.codegen-e.2544 (.caddr.2454 .e.2576)) (list (reverse (.code",
".2536)) (reverse (.reps.2537)) (reverse (.objs.2538)) .argc-varg.2588 .frame-siz",
"e.2587)))))) ((core#lambda () (core#begin (core#define .loop.2591 (core#lambda (",
".e.2592) ((core#lambda (.key.2593) (core#if ((core#lambda (.it.2594) (core#if .i",
"t.2594 .it.2594 ((core#lambda (.it.2595) (core#if .it.2595 .it.2595 ((core#lambd",
"a (.it.2596) (core#if .it.2596 .it.2596 ((core#lambda (.it.2597) (core#if .it.25",
"97 .it.2597 #f)) (eqv? .key.2593 (core#quote undefined))))) (eqv? .key.2593 (cor",
"e#quote quote))))) (eqv? .key.2593 (core#quote lambda))))) (eqv? .key.2593 (core",
"#quote ref))) 1 (core#if ((core#lambda (.it.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))) (core#if ((core#lambda (.it.2599) (core#i",
"f .it.2599 .it.2599 #f)) (eqv? .key.2593 (core#quote set!))) (.loop.2591 (.caddd",
"r.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#de",
"fine .loop.2600 (core#lambda (.args.2601 .c.2602) (core#if (symbol? .args.2601) ",
"(cons .c.2602 #t) (core#if (null? .args.2601) (cons .c.2602 #f) (.loop.2600 (cdr",
" .args.2601) (+ 1 .c.2602)))))) (.loop.2600 (cadr .e.2576) 0))))) #undefined))))",
") (car .e.2576)))) (core#lambda (.e.2603) (with-dynamic-environment (list (cons ",
".code.2536 (core#quote ())) (cons .env.2535 (core#quote ())) (cons .reps.2537 (c",
"ore#quote ())) (cons .objs.2538 (core#quote ()))) (core#lambda () (core#begin (.",
"codegen-e.2544 .e.2603) (car (.reps.2537))))))))))))))))))))) (core#lambda (.e.2",
"604) (.codegen.2460 (.transform.2459 (.normalize.2458 .e.2604)))))))))))))) (cor",
"e#lambda (.compile.2605) (core#set! compile .compile.2605)))) (core#define eval ",
"(core#lambda (.expr.2606 . .env.2607) (load (expand .expr.2606 (core#if (null? .",
"env.2607) default-environment (car .env.2607)))))))))",
2017-04-03 09:09:19 -04:00
};
2017-04-04 06:00:37 -04:00
#endif
2017-04-03 09:09:19 -04:00
#if PIC_USE_LIBRARY
static const char boot_library_rom[][80] = {
2017-04-03 14:55:23 -04:00
"(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",
2017-04-03 14:55:23 -04:00
"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) ((core#lambda (.exprs.2654) (for-each (c",
"ore#lambda (.e.2655) (eval .e.2655 .name.2649)) .exprs.2654)) (core#if (core#if ",
"(pair? .expr.2653) (eq? (car .expr.2653) (core#quote begin)) #f) (cdr .expr.2653",
") (list .expr.2653)))) .body.2650))))) (cadr .form.2647) (cddr .form.2647)))) (c",
"ore#begin (.define-transformer.2646 (core#quote cond-expand) (core#lambda (.form",
".2656 ._.2657) ((core#lambda (.test.2658) (core#begin (core#set! .test.2658 (cor",
"e#lambda (.form.2659) ((core#lambda (.it.2660) (core#if .it.2660 .it.2660 ((core",
"#lambda (.it.2661) (core#if .it.2661 .it.2661 ((core#lambda (.it.2662) (core#if ",
".it.2662 .it.2662 #f)) (core#if (pair? .form.2659) ((core#lambda (.key.2663) (co",
"re#if ((core#lambda (.it.2664) (core#if .it.2664 .it.2664 #f)) (eqv? .key.2663 (",
"core#quote library))) (.find-library.2611 (cadr .form.2659)) (core#if ((core#lam",
"bda (.it.2665) (core#if .it.2665 .it.2665 #f)) (eqv? .key.2663 (core#quote not))",
") (not (.test.2658 (cadr .form.2659))) (core#if ((core#lambda (.it.2666) (core#i",
"f .it.2666 .it.2666 #f)) (eqv? .key.2663 (core#quote and))) ((core#lambda () (co",
"re#begin (core#define .loop.2667 (core#lambda (.form.2668) ((core#lambda (.it.26",
"69) (core#if .it.2669 .it.2669 ((core#lambda (.it.2670) (core#if .it.2670 .it.26",
"70 #f)) (core#if (.test.2658 (car .form.2668)) (.loop.2667 (cdr .form.2668)) #f)",
"))) (null? .form.2668)))) (.loop.2667 (cdr .form.2659))))) (core#if ((core#lambd",
"a (.it.2671) (core#if .it.2671 .it.2671 #f)) (eqv? .key.2663 (core#quote or))) (",
"(core#lambda () (core#begin (core#define .loop.2672 (core#lambda (.form.2673) (c",
"ore#if (pair? .form.2673) ((core#lambda (.it.2674) (core#if .it.2674 .it.2674 ((",
"core#lambda (.it.2675) (core#if .it.2675 .it.2675 #f)) (.loop.2672 (cdr .form.26",
"73))))) (.test.2658 (car .form.2673))) #f))) (.loop.2672 (cdr .form.2659))))) (c",
"ore#if #t #f #undefined)))))) (car .form.2659)) #f)))) (core#if (symbol? .form.2",
"659) (memq .form.2659 (features)) #f)))) (eq? .form.2659 (core#quote else))))) (",
"(core#lambda () (core#begin (core#define .loop.2676 (core#lambda (.clauses.2677)",
" (core#if (null? .clauses.2677) #undefined (core#if (.test.2658 (caar .clauses.2",
"677)) (cons (make-identifier (core#quote begin) default-environment) (append (cd",
"ar .clauses.2677) (core#quote ()))) (.loop.2676 (cdr .clauses.2677)))))) (.loop.",
"2676 (cdr .form.2656))))))) #undefined))) (core#begin (.define-transformer.2646 ",
"(core#quote import) (core#lambda (.form.2678 ._.2679) ((core#lambda (.caddr.2680",
" .prefix.2681 .getlib.2682) ((core#lambda (.extract.2683 .collect.2684) (core#be",
"gin (core#set! .extract.2683 (core#lambda (.spec.2685) ((core#lambda (.key.2686)",
" (core#if ((core#lambda (.it.2687) (core#if .it.2687 .it.2687 ((core#lambda (.it",
".2688) (core#if .it.2688 .it.2688 ((core#lambda (.it.2689) (core#if .it.2689 .it",
".2689 ((core#lambda (.it.2690) (core#if .it.2690 .it.2690 #f)) (eqv? .key.2686 (",
"core#quote except))))) (eqv? .key.2686 (core#quote prefix))))) (eqv? .key.2686 (",
"core#quote rename))))) (eqv? .key.2686 (core#quote only))) (.extract.2683 (cadr ",
".spec.2685)) (core#if #t (.getlib.2682 .spec.2685) #undefined))) (car .spec.2685",
")))) (core#begin (core#set! .collect.2684 (core#lambda (.spec.2691) ((core#lambd",
"a (.key.2692) (core#if ((core#lambda (.it.2693) (core#if .it.2693 .it.2693 #f)) ",
"(eqv? .key.2692 (core#quote only))) ((core#lambda (.alist.2694) (map (core#lambd",
"a (.var.2695) (assq .var.2695 .alist.2694)) (cddr .spec.2691))) (.collect.2684 (",
"cadr .spec.2691))) (core#if ((core#lambda (.it.2696) (core#if .it.2696 .it.2696 ",
"#f)) (eqv? .key.2692 (core#quote rename))) ((core#lambda (.alist.2697 .renames.2",
"698) (map (core#lambda (.s.2699) ((core#lambda (.it.2700) (core#if .it.2700 .it.",
"2700 ((core#lambda (.it.2701) (core#if .it.2701 .it.2701 #f)) .s.2699))) (assq (",
"car .s.2699) .renames.2698))) .alist.2697)) (.collect.2684 (cadr .spec.2691)) (m",
"ap (core#lambda (.x.2702) (cons (car .x.2702) (cadr .x.2702))) (cddr .spec.2691)",
")) (core#if ((core#lambda (.it.2703) (core#if .it.2703 .it.2703 #f)) (eqv? .key.",
"2692 (core#quote prefix))) ((core#lambda (.alist.2704) (map (core#lambda (.s.270",
"5) (cons (.prefix.2681 (.caddr.2680 .spec.2691) (car .s.2705)) (cdr .s.2705))) .",
"alist.2704)) (.collect.2684 (cadr .spec.2691))) (core#if ((core#lambda (.it.2706",
") (core#if .it.2706 .it.2706 #f)) (eqv? .key.2692 (core#quote except))) ((core#l",
"ambda (.alist.2707) ((core#lambda () (core#begin (core#define .loop.2708 (core#l",
"ambda (.alist.2709) (core#if (null? .alist.2709) (core#quote ()) (core#if (memq ",
"(caar .alist.2709) (cddr .spec.2691)) (.loop.2708 (cdr .alist.2709)) (cons (car ",
".alist.2709) (.loop.2708 (cdr .alist.2709))))))) (.loop.2708 .alist.2707))))) (.",
"collect.2684 (cadr .spec.2691))) (core#if #t (dictionary-map (core#lambda (.x.27",
"10) (cons .x.2710 .x.2710)) (.library-exports.2614 (.getlib.2682 .spec.2691))) #",
"undefined)))))) (car .spec.2691)))) ((core#lambda (.import.2711) (core#begin (co",
"re#set! .import.2711 (core#lambda (.spec.2712) ((core#lambda (.lib.2713 .alist.2",
"714) (for-each (core#lambda (.slot.2715) (.library-import.2615 .lib.2713 (cdr .s",
"lot.2715) (car .slot.2715))) .alist.2714)) (.extract.2683 .spec.2712) (.collect.",
"2684 .spec.2712)))) (for-each .import.2711 (cdr .form.2678)))) #undefined)))) #u",
"ndefined #undefined)) (core#lambda (.x.2716) (car (cdr (cdr .x.2716)))) (core#la",
"mbda (.prefix.2717 .symbol.2718) (string->symbol (string-append (symbol->string ",
".prefix.2717) (symbol->string .symbol.2718)))) (core#lambda (.name.2719) (core#i",
"f (.find-library.2611 .name.2719) .name.2719 (error \"library not found\" .name.27",
"19)))))) (.define-transformer.2646 (core#quote export) (core#lambda (.form.2720 ",
"._.2721) ((core#lambda (.collect.2722 .export.2723) (core#begin (core#set! .coll",
"ect.2722 (core#lambda (.spec.2724) (core#if (symbol? .spec.2724) (cons .spec.272",
"4 .spec.2724) (core#if (core#if (list? .spec.2724) (core#if (= (length .spec.272",
"4) 3) (eq? (car .spec.2724) (core#quote rename)) #f) #f) (cons (list-ref .spec.2",
"724 1) (list-ref .spec.2724 2)) (error \"malformed export\"))))) (core#begin (core",
"#set! .export.2723 (core#lambda (.spec.2725) ((core#lambda (.slot.2726) (.librar",
"y-export.2616 (car .slot.2726) (cdr .slot.2726))) (.collect.2722 .spec.2725)))) ",
"(for-each .export.2723 (cdr .form.2720))))) #undefined #undefined))))))) (core#l",
"ambda (.name.2727 .macro.2728) (dictionary-set! (macro-objects) .name.2727 .macr",
"o.2728))) (core#begin ((core#lambda () (core#begin (.make-library.2612 (core#quo",
"te (picrin base))) (core#begin (set-car! (dictionary-ref .*libraries*.2610 (.man",
"gle.2608 (core#quote (picrin base)))) default-environment) (core#begin ((core#la",
"mbda (.exports.2729) ((core#lambda (.export-keyword.2730) ((core#lambda () (core",
"#begin (for-each .export-keyword.2730 (core#quote (define lambda quote set! if b",
"egin define-macro let let* letrec letrec* let-values let*-values define-values q",
"uasiquote unquote unquote-splicing and or cond case else => do when unless param",
"eterize define-record-type))) (core#begin (.export-keyword.2730 (core#quote bool",
"ean?)) (dictionary-for-each .export-keyword.2730 (global-objects))))))) (core#la",
"mbda (.keyword.2731) (dictionary-set! .exports.2729 .keyword.2731 .keyword.2731)",
"))) (.library-exports.2614 (core#quote (picrin base)))) (core#begin (core#set! e",
"val ((core#lambda (.e.2732) (core#lambda (.expr.2733 . .lib.2734) ((core#lambda ",
"(.lib.2735) (with-dynamic-environment (list (cons .current-library.2609 .lib.273",
"5)) (core#lambda () (.e.2732 .expr.2733 (.library-environment.2613 .lib.2735))))",
") (core#if (null? .lib.2734) (.current-library.2609) (car .lib.2734))))) eval)) ",
"(.make-library.2612 (core#quote (picrin user))))))))) (values .current-library.2",
"609 .find-library.2611 .make-library.2612 .library-environment.2613 .library-exp",
"orts.2614 .library-import.2615 .library-export.2616))))))))))))))) (core#lambda ",
"(.current-library.2736 .find-library.2737 .make-library.2738 .library-environmen",
"t.2739 .library-exports.2740 .library-import.2741 .library-export.2742) (core#be",
"gin (core#set! current-library .current-library.2736) (core#begin (core#set! fin",
"d-library .find-library.2737) (core#begin (core#set! make-library .make-library.",
"2738) (core#begin (core#set! library-environment .library-environment.2739) (cor",
"e#begin (core#set! library-exports .library-exports.2740) (core#begin (core#set!",
" library-import .library-import.2741) (core#set! library-export .library-export.",
"2742))))))))))))))))",
2015-01-31 07:14:14 -05:00
};
2017-04-03 09:09:19 -04:00
#endif
2014-09-08 10:31:04 -04:00
2016-03-03 04:59:07 -05:00
void
2017-04-04 06:00:37 -04:00
pic_boot(pic_state *PIC_UNUSED(pic))
2016-03-03 04:59:07 -05:00
{
2017-04-04 06:00:37 -04:00
#if PIC_USE_EVAL
2017-04-04 01:54:58 -04:00
pic_load_native(pic, &boot_compile_rom[0][0]);
2017-04-04 06:00:37 -04:00
#endif
2017-04-03 09:09:19 -04:00
#if PIC_USE_LIBRARY
2017-04-03 11:52:59 -04:00
pic_load_native(pic, &boot_library_rom[0][0]);
2017-04-03 09:09:19 -04:00
#endif
2016-03-03 04:59:07 -05:00
}