shithub: femtolisp

Download patch

ref: b6927437b4089386066a6dbe1b7e84fb4e20d638
parent: 36b24a92d94b1d1f100746d27d13fc77f1599201
author: Sigrid Solveig Haflínudóttir <[email protected]>
date: Wed Nov 27 19:12:36 EST 2024

compiler: none of the builtins are constants, still use their value directly

--- a/compiler.lsp
+++ b/compiler.lsp
@@ -437,7 +437,6 @@
            (if (and (symbol? head)
                     (not (in-env? head env))
                     (bound? head)
-                    (constant? head)
                     (builtin? (top-level-value head)))
                (top-level-value head)
                head)))
--- a/flisp.boot
+++ b/flisp.boot
@@ -9,34 +9,35 @@
 	      #fn("5000n10[:" #()) #fn("5000n10\\:" #())
 	      #fn("5000n10]:" #()) 0 #fn("6000n201_:" #()) 0 0 0 #fn("6000n201c:" #())
 	      #fn("6000n201d:" #()) #fn("7000z00:" #())
-	      #fn("8000z0200}2:" #(#.apply))
-	      #fn("8000z0200}2:" #(#.+)) #fn("8000z0200}2:" #(#.-))
-	      #fn("8000z0200}2:" #(#.*)) #fn("8000z0200}2:" #(#./))
-	      #fn("8000z0200}2:" #(#.div0))
-	      #fn("6000n201l:" #()) #fn("6000n201m:" #()) 0 #fn("8000z0200}2:" #(#.vector))
+	      #fn("8000z0700}2:" #(apply))
+	      #fn("8000z0700}2:" #(+)) #fn("8000z0700}2:" #(-))
+	      #fn("8000z0700}2:" #(*)) #fn("8000z0700}2:" #(/))
+	      #fn("8000z0700}2:" #(div0))
+	      #fn("6000n201l:" #()) #fn("6000n201m:" #()) 0 #fn("8000z0700}2:" #(vector))
 	      #fn("7000n30182p:" #()) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 	      0 0 0 0 0 0 0 0 0 0 0 0)
-	    *interactive* #f *syntax-environment*
+	    *empty-string* "" *interactive* #f *runestring-type* (array rune)
+	    *string-type* (array byte) *syntax-environment*
 	    #table(when #fn(";000z1200211POe4:" #(if begin))  with-output-to #fn("<000z12021e1220e2e1e12315163:" #(#fn(nconc)
   with-bindings *output-stream* #fn(copy-list)))  catch #fn("@000n220502112286e123242586e2262786e22829e2e3262:86e20e3e42;86e22<86e2e4e3e3:" #(#fn(gensym)
   trycatch λ if and pair? eq? car quote thrown-value cadr caddr raise))  let* #fn("@000z10H3E02021e1qe12215153e1:2021e173051e1e1220=B3H02024e10=e12215153e1@301515375051e2:" #(#fn(nconc)
   λ #fn(copy-list) caar let* cadar))  with-input-from #fn("<000z12021e1220e2e1e12315163:" #(#fn(nconc)
   with-bindings *input-stream* #fn(copy-list)))  unless #fn("<000z1200O211Pe4:" #(if
-  begin))  letrec #fn(">000z1202021e12223052e122240522515154e1222605262:" #(#fn(nconc)
-  λ #fn(map) #.car #fn("8000n12021e12205162:" #(#fn(nconc) set! #fn(copy-list)))
+  begin))  letrec #fn(">000z1202021e12273052e122240522515154e1222605262:" #(#fn(nconc)
+  λ #fn(map) car #fn("8000n12021e12205162:" #(#fn(nconc) set! #fn(copy-list)))
   #fn(copy-list) #fn("5000n17060:" #(void))))  time #fn(">000n12050218522e1e2e123024252622e185e327e4e3e3:" #(#fn(gensym)
   let time-now prog1 princ "Elapsed time: " - " seconds\n"))  cond #fn(":000z0D\x8a5852085>1_485<061:" #(#fn(">000n10H340O:0<85<20Q;I80485<DQ3C085=J6085<:2185=P:85=J@02285<A<0=51e3:85T23C\x98074758551513c07675855151278685<e2e12886217975855151PA<0=51e4e3:2:50278685<e2e1288675855186e2A<0=51e4e3:2885<2185=PA<0=51e4:" #(else
-  begin or => 1arg-lambda? caddr caadr let if cddr #fn(gensym)) cond-clauses->if)))  do #fn("J000z220501<2122052212305221240522587268927882829e12:1=51522829e12:82512887e18;52e153e4e3e2e12887e18:52e3:" #(#fn(gensym)
-  #fn(map) #.car #.cadr #fn("6000n170051B38071061:0<:" #(cddr caddr)) letrec λ
-  if #fn(nconc) begin #fn(copy-list)))  assert #fn(";000n1200D2122230e2e2e2e4:" #(if
-  raise quote assert-failed))  case #fn("A000z1D\x8a68620_4215022870e2e12324e125268687>215252e3:" #(#fn("8000n2120C5020:1J40O:1R3=021072151e3:1H3=023072151e3:1=J>0230721<51e3:74251523=0260271e2e3:280271e2e3:" #(else
-  eq? quote-value eqv? every #.symbol? memq quote memv) vals->cond)
+  begin or => 1arg-lambda? caddr caadr let if cddr #fn(gensym)) cond-clauses->if)))  do #fn("J000z220501<2172052217305221240522587268927882829e12:1=51522829e12:82512887e18;52e153e4e3e2e12887e18:52e3:" #(#fn(gensym)
+  #fn(map) car cadr #fn("6000n170051B38071061:0<:" #(cddr caddr)) letrec λ if
+  #fn(nconc) begin #fn(copy-list)))  assert #fn(";000n1200D2122230e2e2e2e4:" #(if
+  raise quote assert-failed))  case #fn("A000z1D\x8a68620_4215022870e2e12324e125268687>215252e3:" #(#fn("8000n2120C5020:1J40O:1R3=021072151e3:1H3=023072151e3:1=J>0230721<51e3:74751523=0260271e2e3:280271e2e3:" #(else
+  eq? quote-value eqv? every symbol? memq quote memv) vals->cond)
   #fn(gensym) let #fn(nconc) cond #fn(map)
   #fn("7000n1A<F0<520=P:" #())))  let #fn(">000z1O0R3B00?641<?041=?1@30D42021e12223052e124151532225052863C0268687e2e186e3@408788P:" #(#fn(nconc)
   λ #fn(map) #fn("5000n10B3500<:0:" #()) #fn(copy-list)
-  #fn("5000n10B3500T:7060:" #(void)) letrec))  with-bindings #fn("G000z12021052202205220230522425e12026888653e12720288687535129242:e12715152242:e127202;8688535152e3e164:" #(#fn(map)
-  #.car #.cadr #fn("5000n12060:" #(#fn(gensym)))
-  #fn(nconc) let #.list #fn(copy-list) #fn("7000n22001e3:" #(set!))
+  #fn("5000n10B3500T:7060:" #(void)) letrec))  with-bindings #fn("G000z12071052207205220230522425e12076888653e12720288687535129242:e12715152242:e127202;8688535152e3e164:" #(#fn(map)
+  car cadr #fn("5000n12060:" #(#fn(gensym)))
+  #fn(nconc) let list #fn(copy-list) #fn("7000n22001e3:" #(set!))
   unwind-protect begin #fn("7000n22001e3:" #(set!))))  define-macro #fn(">000z120210<e22223e10=e12415153e3:" #(set-syntax!
   quote #fn(nconc) λ #fn(copy-list)))  receive #fn("?000z22021q1e32221e10e123825153e3:" #(call-with-values
   λ #fn(nconc) #fn(copy-list)))  dotimes #fn("A000z10<0T20E2187Ke32223e186e1e12415153e4:" #(for
@@ -83,17 +84,16 @@
 	    #fn("6000n10r4G:" #() bcode:sp) bcode:stack #fn("8000n20r40r4G1Mp:" #() bcode:stack)
 	    box-vars #fn("9000n2D\x8a68620086>2_486<\x8c1161:" #(#fn("9000n10B3Q00<T3B070A21720<5153@30D4F<0=61:D:" #(emit
   box caddr))) box-vars)
-	    bq-bracket #fn(";000n20H3=020710152e2:0<22CR01El380200=P:202324710=1K~52e3e2:0<25CS01El390260Te2:202027710T1K~52e3e2:0<28CO01El3500T:202029710T1K~52e3e2:20710152e2:" #(#.list
-  bq-process unquote #.cons 'unquote unquote-splicing copy-list 'unquote-splicing
+	    bq-bracket #fn(";000n20H3=070710152e2:0<22CR01El380700=P:707324710=1K~52e3e2:0<25CS01El390260Te2:707027710T1K~52e3e2:0<28CO01El3500T:707029710T1K~52e3e2:70710152e2:" #(list
+  bq-process unquote cons 'unquote unquote-splicing copy-list 'unquote-splicing
   unquote-nsplicing 'unquote-nsplicing) bq-bracket)
-	    bq-bracket1 #fn(":000n20B;38040<20Q3K01El3500T:2122730=1K~52e3:730162:" #(unquote
-  #.cons 'unquote bq-process) bq-bracket1)
-	    bq-process #fn("<000n20R380200e2:0]3T0717205115286<23C902486=P:252486e3:0H3400:0<26CB02327710T1KM52e3:0<28CW01El;3:04790r2523500T:2:2;710=1K~52e3:7<7=052It07>0512?2@1>105286J802387P:87=JA02:87<7186152e3:2A2B87P7186152e162:D\x8a6862C186>2_486<\x8c10q62:" #(quote
-  bq-process vector->list #.list #.vector #.apply quasiquote 'quasiquote
-  unquote length= #.cons 'unquote any splice-form? lastcdr #fn(map)
-  #fn("7000n1700A62:" #(bq-bracket1)) #fn(nconc)
-  #fn(list*) #fn("=000n20J;02071151P:0B3n00<22CW020731AEl3700=@C02425e2760=AK~52e252P:F<0=770<A521P62:2071760A521P51P:" #(nconc
-  reverse! unquote nreconc #.list 'unquote bq-process bq-bracket))) bq-process)
+	    bq-bracket1 #fn(":000n20B;38040<20Q3K01El3500T:7122730=1K~52e3:730162:" #(unquote
+  cons 'unquote bq-process) bq-bracket1)
+	    bq-process #fn("<000n20R380200e2:0]3T0717205115286<73C907486=P:757486e3:0H3400:0<26CB07327710T1KM52e3:0<28CW01El;3:04790r2523500T:7:2;710=1K~52e3:7<7=052It07>0512?2@1>105286J807387P:87=JA07:87<7186152e3:2A7B87P7186152e162:D\x8a6862C186>2_486<\x8c10q62:" #(quote
+  bq-process vector->list list vector apply quasiquote 'quasiquote unquote
+  length= cons 'unquote any splice-form? lastcdr #fn(map)
+  #fn("7000n1700A62:" #(bq-bracket1)) #fn(nconc) list* #fn("=000n20J;02071151P:0B3n00<22CW020731AEl3700=@C07425e2760=AK~52e252P:F<0=770<A521P62:2071760A521P51P:" #(nconc
+  reverse! unquote nreconc list 'unquote bq-process bq-bracket))) bq-process)
 	    builtin->instruction #fn("8000n120A0O63:" #(#fn(get)) #(#table(#.cadr cadr  #.aset! aset!  #.+ +  #.- -  #.equal? equal?  #.eq? eq?  #.builtin? builtin?  #.not not  #.pair? pair?  #.aref aref  #.cdr cdr  #./ /  #.div0 div0  #.set-car! set-car!  #.vector vector  #.set-cdr! set-cdr!  #.< <  #.cons cons  #.apply apply  #.eqv? eqv?  #.vector? vector?  #.list list  #.car car  #.bound? bound?  #.function? function?  #.null? null?  #.symbol? symbol?  #.compare compare  #.boolean? boolean?  #.fixnum? fixnum?  #.atom? atom?  #.= =  #.number? number?  #.* *)))
 	    caaaar #fn("5000n10<<<<:" #() caaaar) caaadr
 	    #fn("5000n10T<<:" #() caaadr) caaar #fn("5000n10<<<:" #() caaar)
@@ -121,10 +121,10 @@
 	    closure? #fn("6000n10\\;36040[S:" #() closure?) compile
 	    #fn("8000n170q7105162:" #(compile-f lower-define) compile)
 	    compile-and #fn(";000n470018283D2166:" #(compile-short-circuit brf) compile-and)
-	    compile-app #fn("E000n483<88R;3Z047088152S;3M0488Z;3E04218851;3:04228851[3;0228851@40887383=24523i07501O89544760K524770183=537608:U5247808237029@402:8:63:89[;39047;8951892<Q;3V047089152S;3I04222<512=d;3;047>83r2523E07501O83T5447802<62:89B;3E047?89<51;39047@83513=07A01828364:8:IE07501O89544760K52@30D4770183=537608;U5248:I<0760r/52@30D48:3C07B018283898:8;67:780823702C@402D8;63:" #(in-env?
-  #fn(constant?) #fn(top-level-value) length> 255 compile-in bcode:stack
-  compile-arglist emit tcall.l call.l builtin->instruction cadr #.cadr length=
-  is-lambda? inlineable? compile-let compile-builtin-call tcall call) compile-app)
+	    compile-app #fn("E000n483<88R;3O047088152S;3B0488Z;3:04218851[3;0218851@40887283=23523i07401O89544750K524760183=537508:U5247708237028@40298:63:89[;39047:8951892;Q;3V047089152S;3I04212;517;d;3;047<83r2523E07401O83T5447702;62:89B;3E047=89<51;39047>83513=07?01828364:8:IE07401O89544750K52@30D4760183=537508;U5248:I<0750r/52@30D48:3C07@018283898:8;67:770823702A@402B8;63:" #(in-env?
+  #fn(top-level-value) length> 255 compile-in bcode:stack compile-arglist emit
+  tcall.l call.l builtin->instruction cadr length= is-lambda? inlineable?
+  compile-let compile-builtin-call tcall call) compile-app)
 	    compile-arglist #fn("8000n3702101>282524228261:" #(for-each #fn("9000n170AFO054471AK62:" #(compile-in
   bcode:stack)) #fn(length)) compile-arglist)
 	    compile-begin #fn("9000n483H3?0700182715064:83=H3>070018283<64:7001O83<5447202352474018283=64:" #(compile-in
@@ -134,9 +134,9 @@
   load1 / vector loadv #() apply tapply) compile-builtin-call)
 	    compile-f #fn("8000n2702101>22262:" #(call-with-values #fn("7000n070AF62:" #(compile-f-))
 						  #fn("5000n20:" #())) compile-f)
-	    compile-f- #fn("O000n270501T711T517215173241T52711518;J7025@408;87H360E@802687518=268:51~73778:528:\x85\xa208?JL07886298>88J708=@508=U54@r07:867;2<2=2<2>8?527?268?5151535152478862@8>268?5188J708=@508=U5547A8608:898>55@30D47B8=2C523I0788688J702D@402E8=53@W088\x85?078862F8=53@E08:J?078862G8=53@30O47H0897I7J1518952537K868@<52486r4268951r4Mp47L868@D7J15154478862M5247N2O7P7Q8651517R86518<537S865162:" #(make-code-emitter
-  lastcdr lambda:vars filter #.pair? λ #fn(length) keyword-arg? emit optargs
-  bcode:indexfor make-perfect-hash-table #fn(map) #.cons #.car iota keyargs
+	    compile-f- #fn("O000n270501T711T517215173741T52711518;J7025@408;87H360E@802687518=268:51~73778:528:\x85\xa208?JL07886298>88J708=@508=U54@r07:867;2<7=2<7>8?527?268?5151535152478862@8>268?5188J708=@508=U5547A8608:898>55@30D47B8=2C523I0788688J702D@402E8=53@W088\x85?078862F8=53@E08:J?078862G8=53@30O47H0897I7J1518952537K868@<52486r4268951r4Mp47L868@D7J15154478862M5247N2O7P7Q8651517R86518<537S865162:" #(make-code-emitter
+  lastcdr lambda:vars filter pair? λ #fn(length) keyword-arg? emit optargs
+  bcode:indexfor make-perfect-hash-table #fn(map) cons car iota keyargs
   emit-optional-arg-inits > 255 largc lvargc vargc argc extend-env
   complex-bindings lambda:body box-vars compile-in ret values #fn(function)
   encode-byte-code bcode:code const-to-idx-vec bcode:cenv) compile-f-)
@@ -161,15 +161,14 @@
 	    compile-or #fn(";000n470018283O2166:" #(compile-short-circuit brt) compile-or)
 	    compile-prog1 #fn(":000n37001O82T544718251B3W0720K5247301O71825154474025524720r/62:D:" #(compile-in
   cddr bcode:stack compile-begin emit pop) compile-prog1)
-	    compile-set! #fn("?000n470821E538821CF07201O83544730248263:88<El7588=51893<07688=51@9077082528:3g07308937028@40298;5347:0K5247201O835447:0r/5247302;62:7201O8354489IA07<2=2>825251@30D47302?8;63:" #(lookup-sym
-  global compile-in emit setg vinfo:heap? vinfo:index capture-var! loada loadc
-  bcode:stack set-car! error #fn(string) "internal error: misallocated var "
-  seta) compile-set!)
+	    compile-set! #fn("?000n470821E538821CF07201O83544730248263:88<El88=T893<07588=51@9076082528:3g07308937027@40288;534790K5247201O83544790r/5247302:62:7201O8354489IA07;2<2=825251@30D47302>8;63:" #(lookup-sym
+  global compile-in emit setg vinfo:index capture-var! loada loadc bcode:stack
+  set-car! error #fn(string) "internal error: misallocated var " seta) compile-set!)
 	    compile-short-circuit #fn("<000n683H3=07001828464:83=H3>070018283<64:710517001O83<544720K52473024524730858:534720r/5247302552476018283=84855647708:62:" #(compile-in
   make-label bcode:stack emit dup pop compile-short-circuit mark-label) compile-short-circuit)
-	    compile-sym #fn(";000n470821E538821Cb0228251;3=0473248251513@07502624825163:750278263:88<El3\\0750287988=5153483;3:047:88=513:07502;62:D:7502<7=0825253483;3:047:88=513:07502;62:D:" #(lookup-sym
+	    compile-sym #fn(";000n470821E538821Cb0228251;3=0473248251513@07502624825163:750278263:88<El3Y0750287988=5153483;370488=T3:07502:62:D:7502;7<0825253483;370488=T3:07502:62:D:" #(lookup-sym
   global #fn(constant?) printable? #fn(top-level-value) emit loadv loadg loada
-  vinfo:index vinfo:heap? car loadc capture-var!) compile-sym)
+  vinfo:index car loadc capture-var!) compile-sym)
 	    compile-thunk #fn(":000n170q21q72051e362:" #(compile-f λ
 							 lower-define) compile-thunk)
 	    compile-while #fn(";000n470051700517101O7250544730K524740885247101O82544750268953475027524730r/5247101O8354475028885347408962:" #(make-label
@@ -211,33 +210,31 @@
 	    emit-optional-arg-inits #fn("<000n582B3\x900700517102284534710238953474075176838452q53O7782515447102884534710295247:0895247;0182=8384KM65:D:" #(make-label
   emit brbound brt compile-in extend-env list-head cadar seta pop mark-label
   emit-optional-arg-inits) emit-optional-arg-inits)
-	    encode-byte-code #fn("S000n17005171855172238651r3238651r2ki2M2452238651E255025502650OO278<28524D8988L3\xd9148689G?=48=29CP02:8:8689KMG2;8<5153489r2M?9@\xa81278<7<2=7>873\x8308=8D2?C702@@p08D2AC702B@d08D2CC702D@X08D2EC702F@L08D2GC702H@@08D2IC702J@408=\x8c1@408=525152489KM?948988L3:08689G@30O?>42K8=2L523`02:8;2;8<518>534278<873707M@407NE5152489KM?9@\xeb08=2OCH0278<7M8>5152489KM?9@\xce08>X3\xc708=2K8?2P523H0278<7M8>5152489KM?9@\x9f02K8?2Q523\x810278<7M8>5152489KM?94278<7M8689G5152489KM?948=2RCK0278<7M8689G5152489KM?9@30D@E0278<7S8>5152489KM?9\x8c1@30O@\x83.47T2U8<878:>38;5242V8<61:" #(reverse!
+	    encode-byte-code #fn("S000n17005171855172238651r3238651r2ki2M2452238651E255025502650OO278<28524D8988L3\xd9148689G?=48=29CP02:8:8689KMG2;8<5153489r2M?9@\xa81278<2<2=7>873\x8308=8D2?C702@@p08D2AC702B@d08D2CC702D@X08D2EC702F@L08D2GC702H@@08D2IC702J@408=\x8c1@408=525152489KM?948988L3:08689G@30O?>42K8=2L523`02:8;2;8<518>534278<873707M@407NE5152489KM?9@\xeb08=2OCH0278<2P8>5152489KM?9@\xce08>X3\xc708=2K8?2Q523H0278<2P8>5152489KM?9@\x9f02K8?2R523\x810278<2P8>5152489KM?94278<2P8689G5152489KM?948=2SCK0278<2P8689G5152489KM?9@30D@E0278<2T8>5152489KM?9\x8c1@30O@\x83.47U2V8<878:>38;5242W8<61:" #(reverse!
   list->vector >= #fn(length) 65536 #fn(table)
   #fn(buffer) #fn(io-write) #int32(0) label #fn(put!)
-  #fn(sizeof) byte #fn(get) Instructions jmp jmp.l brt brt.l brf brf.l brne
-  brne.l brnn brnn.l brn brn.l #fn(memq) (jmp brf brt brne brnn brn) int32
-  int16 brbound (loadv.l loadg.l setg.l loada.l seta.l largc lvargc call.l
-		 tcall.l loadc.l box.l) (optargs keyargs) keyargs uint8
-  table-foreach #fn(";000n220A052421AF37072@407324921520~5162:" #(#fn(io-seek)
-								  #fn(io-write)
-								  int32 int16
-								  #fn(get)))
-  #fn(iostream->string)) encode-byte-code)
-	    error #fn("9000z020210P61:" #(#fn(raise) error) error) eval
-	    #fn("7000n170710515160:" #(compile-thunk expand) eval) even? #fn("7000n1200K52El:" #(#fn(logand)) even?)
-	    every #fn("7000n21H;ID0401<51;3:047001=62:" #(every) every) expand
-	    #fn("F000n1DDDDDDDDDDD\x8a5\x8a6\x8a7\x8a8\x8a9\x8a:\x8a;\x8a<\x8a=\x8a>\x8a?8520_4862186>1_48722e1_4882385868?87>4_489248?89>2_48:258:>1_48;268:8988>3_48<278?8:8988>4_48=28888?>2_48>29_48?2:8?8>8;8<8=>5_48?<0q62:" #(#fn("7000n20Z;I904200152S:" #(#fn(assq)) top?)
+  #fn(sizeof) #fn(byte) #fn(get) Instructions jmp jmp.l brt brt.l brf brf.l
+  brne brne.l brnn brnn.l brn brn.l #fn(memq)
+  (jmp brf brt brne brnn brn) int32 int16 brbound #fn(int32)
+  (loadv.l loadg.l setg.l loada.l seta.l largc lvargc call.l tcall.l loadc.l
+   box.l) (optargs keyargs) keyargs #fn(uint8) table-foreach #fn(";000n220A052421AF37072@407324921520~5162:" #(#fn(io-seek)
+  #fn(io-write) int32 int16 #fn(get))) #fn(iostream->string)) encode-byte-code)
+	    eq #.eq? error
+	    #fn("9000z020210P61:" #(#fn(raise) error) error) eval #fn("7000n170710515160:" #(compile-thunk
+  expand) eval)
+	    even? #fn("7000n1200K52El:" #(#fn(logand)) even?) every
+	    #fn("7000n21H;ID0401<51;3:047001=62:" #(every) every) expand #fn("F000n1DDDDDDDDDDD\x8a5\x8a6\x8a7\x8a8\x8a9\x8a:\x8a;\x8a<\x8a=\x8a>\x8a?8520_4862186>1_48722e1_4882385868?87>4_489248?89>2_48:258:>1_48;268:8988>3_48<278?8:8988>4_48=28888?>2_48>29_48?2:8?8>8;8<8=>5_48?<0q62:" #(#fn("7000n20Z;I904200152S:" #(#fn(assq)) top?)
   #fn("8000n10H3400:020d3400:0<B;3;047105122Q3F023A<7405151A<0=5162:0<A<0=51P:" #(((begin))
-  caar begin #fn(append) cdar) splice-begin) *expanded* #fn("A000n20H3400:A<201523:0F<051@300A<21152873;0728651@30q2324258852152\x8a987IA024269289>28662:D\x8a:8:278:928993>4_48:<\x8c186518:D8;B3c0493<788;51QIC08;92<8;<89<52_@;08;798;51_48;=?;@\xfb/48::" #(begin
-  define get-defined-vars #fn(nconc) #fn(map) #.list #fn("7000n1A<0F<62:" #())
-  #fn(";000n10H3400:0<B;3;042071051Q3<00<A<0=51P:F<0<92<52922223247585515292<52_493<85PA<0=51P:" #(define
-  caar #fn(nconc) #fn(map) #.list get-defined-vars)) caar cdar) expand-body)
+  caar begin #fn(append) cdar) splice-begin) *expanded* #fn("A000n20H3400:A<201523:0F<051@300A<21152873;0728651@30q2324758852152\x8a987IA024269289>28662:D\x8a:8:278:928993>4_48:<\x8c186518:D8;B3c0493<788;51QIC08;92<8;<89<52_@;08;798;51_48;=?;@\xfb/48::" #(begin
+  define get-defined-vars #fn(nconc) #fn(map) list #fn("7000n1A<0F<62:" #())
+  #fn(";000n10H3400:0<B;3;042071051Q3<00<A<0=51P:F<0<92<52922223747585515292<52_493<85PA<0=51P:" #(define
+  caar #fn(nconc) #fn(map) list get-defined-vars)) caar cdar) expand-body)
   #fn("9000n20H3400:0<B;37040<=B3F070051A<71051152e2@400<F<0=152P:" #(caar
   cadar) expand-lambda-list) #fn("7000n10H3600e1:0<B3?070051A<0=51P:0<A<0=51P:" #(caar) l-vars)
-  #fn("?000n20T7005171051A<0T5122232489521522225e1F<868:52e192<888:528764:" #(lastcdr
-  cddr #fn(nconc) #fn(map) #.list λ) expand-lambda)
-  #fn("?000n20=V;I6040TH3M070051J400:210TA<72051152e3:730517405170051F<730515125262789521522521e18792<868:52Pe193<888:5263:" #(cddr
-  define caddr cdadr caadr #fn(nconc) #fn(map) #.list) expand-define)
+  #fn("?000n20T7005171051A<0T5122237489521522225e1F<868:52e192<888:528764:" #(lastcdr
+  cddr #fn(nconc) #fn(map) list λ) expand-lambda)
+  #fn("?000n20=V;I6040TH3M070051J400:210TA<72051152e3:730517405170051F<730515125267789521522521e18792<868:52Pe193<888:5263:" #(cddr
+  define caddr cdadr caadr #fn(nconc) #fn(map) list) expand-define)
   #fn("=000n20T20A<71051222324F1>2865215252P:" #(begin cddr #fn(nconc)
 						 #fn(map)
 						 #fn("9000n10<70A<0TF525150Fe3:" #(compile-thunk))) expand-let-syntax)
@@ -252,17 +249,17 @@
 	    filter #fn("9000n2D200>1?648601qe163:" #(#fn("8000n382D1B3Q04A1<513?0821<qPN=?2@30D41=?1@\x0e/4=:" #() filter-)) filter)
 	    fits-i8 #fn("7000n10Y;3F04700r\xb052;3:04710r\xaf62:" #(>= <=) fits-i8)
 	    foldl #fn("9000n382J401:700082<15282=63:" #(foldl) foldl) foldr
-	    #fn(":000n382J401:082<700182=5362:" #(foldr) foldr) for-each #fn(">000z2D\x8a7872087>1_482JI0D1B3@0401<5141=?1@\x1f/@<087<0182P524D:" #(#fn("9000n21<B3J002021152f24A<0202215262:D:" #(#fn(map)
-  #.car #.cdr) for-each-n)) for-each)
-	    get-defined-vars #fn("7000n170A<05161:" #(delete-duplicates) #(#0=(#fn("8000n10H340q:0<20Q;36040=B3d00TR;37040Te1;IS040TB;3E0471051R;3:0471051e1;I404q:0<22C?02324A<0=52}2:q:" #(define
-  caadr begin #fn(nconc) #fn(map)) #(#0#)))))
+	    #fn(":000n382J401:082<700182=5362:" #(foldr) foldr) for-each #fn(">000z2D\x8a7872087>1_482JI0D1B3@0401<5141=?1@\x1f/@<087<0182P524D:" #(#fn("9000n21<B3J002071152f24A<0207215262:D:" #(#fn(map)
+  car cdr) for-each-n)) for-each)
+	    get-defined-vars #fn("7000n170A<05161:" #(delete-duplicates) #(#0=(#fn("8000n10H340q:0<20Q;36040=B3d00TR;37040Te1;IS040TB;3E0471051R;3:0471051e1;I404q:0<22C?07324A<0=52}2:q:" #(define
+  caadr begin nconc #fn(map)) #(#0#)))))
 	    hex5 #fn("8000n170210r@52r52263:" #(string-lpad #fn(number->string)
 						#\0) hex5)
 	    identity #fn("5000n10:" #() identity) in-env?
 	    #fn("7000n21B;3F042001<52;I:047101=62:" #(#fn(assq) in-env?) in-env?)
 	    index-of #fn("9000n31J40O:01<C5082:7001=82KM63:" #(index-of) index-of)
-	    inlineable? #fn("9000n10<85B;3u047085<51;3i047185T51;3]04722385T52;3O047485T2552S;3@047685T270=5162:" #(is-lambda?
-  list? every #.symbol? length> 255 length= #fn(length)) inlineable?)
+	    inlineable? #fn("9000n10<85B;3u047085<51;3i047185T51;3]04727385T52;3O047485T2552S;3@047685T270=5162:" #(is-lambda?
+  list? every symbol? length> 255 length= #fn(length)) inlineable?)
 	    io-readall #fn("8000n12050218505242285518623d;3804240513702560:86:" #(#fn(buffer)
   #fn(io-copy) #fn(iostream->string) "" #fn(io-eof?)
   #fn(eof-object)) io-readall)
@@ -283,7 +280,7 @@
 	    lastcdr #fn("6000n10H3400:70051=:" #(last-pair) lastcdr) length=
 	    #fn("8000n21EL340O:1El3500H:0H3601El:700=1K~62:" #(length=) length=)
 	    length> #fn("8000n21EL3400:1El3;00B;34040:0H3601EL:700=1K~62:" #(length>) length>)
-	    list->vector #fn("6000n1200}2:" #(#.vector) list->vector) list-head
+	    list->vector #fn("6000n1700}2:" #(vector) list->vector) list-head
 	    #fn("9000n2701E52340q:0<710=1K~52P:" #(<= list-head) list-head)
 	    list-ref #fn("7000n2700152<:" #(list-tail) list-ref) list-tail
 	    #fn("8000n2701E523400:710=1K~62:" #(<= list-tail) list-tail) list?
@@ -313,12 +310,11 @@
 				       *print-readably* *print-level*
 				       *print-length* *os-name*) *print-pretty*
   *print-readably* #fn("5000n0Aw04Fw1:" #(*print-pretty* *print-readably*))
-  #fn("=000n07021A>1722350515224252627842628845253f2F52429F7:52\x8c142;F61:" #(filter
+  #fn("=000n07021A>1722350515224752677842678845253f2F52429F7:52\x8c142;F61:" #(filter
   #fn("8000n10Z;3u0420051S;3j0421051[S;IC0422051222105151dS;3I04230A52S;3=04242105151S:" #(#fn(constant?)
   #fn(top-level-value) #fn(string) #fn(memq)
   #fn(iostream?))) simple-sort #fn(environment)
-  #fn(write) #fn(nconc) #fn(map) #.list #fn(top-level-value)
-  #fn(io-write) *linefeed* #fn(io-close)))
+  #fn(write) nconc #fn(map) list top-level-value #fn(io-write) *linefeed* #fn(io-close)))
   #fn("6000n1A50420061:" #(#fn(raise)))) make-system-image)
 	    map! #fn("8000n21D1B3B04101<51_41=?1@\x1d/4:" #() map!) map-int
 	    #fn(";000n2701E52340q:0E51qPq\x8a78786_4K1K~21870>2|486:" #(<= #fn("7000n1A<F051qPN4AA<=_:" #())) map-int)
@@ -338,10 +334,10 @@
 	    #fn("6000n170051S:" #(even?) odd?) positive? #fn("7000n1700E62:" #(>) positive?)
 	    princ #fn(";000z070Ow042185>1220>12386>1{86504:" #(*print-readably*
 							       #fn("5000n0Aw0:" #(*print-readably*))
-							       #fn("7000n07021A62:" #(for-each
-  #fn(write))) #fn("6000n1A50420061:" #(#fn(raise)))) princ)
-	    print #fn("9000z07021062:" #(for-each #fn(write)) print)
-	    print-exception #fn("=000n10B;3D040<20Q;3:04710r3523I072230T24534757605151@ 00B;3D040<27Q;3:04710r3523I072287605129534750T51@\xee00B;3D040<2:Q;3:04710r2523?0722;0T2<53@\xc600B;38040<2=Q3B0722>514720=f2@\xa700B;38040<2?Q3G07@76051514722A0T52@\x8307B051;3:04710r2523c0750<514722C5140T2D8551;I60485R37072@40758551\x8c1@>0722E514750514727F61:" #(type-error
+							       #fn("7000n07071A62:" #(for-each
+  write)) #fn("6000n1A50420061:" #(#fn(raise)))) princ)
+	    print #fn("9000z07071062:" #(for-each write) print) print-exception
+	    #fn("=000n10B;3D040<20Q;3:04710r3523I072230T24534757605151@ 00B;3D040<27Q;3:04710r3523I072287605129534750T51@\xee00B;3D040<2:Q;3:04710r2523?0722;0T2<53@\xc600B;38040<2=Q3B0722>514720=f2@\xa700B;38040<2?Q3G07@76051514722A0T52@\x8307B051;3:04710r2523c0750<514722C5140T2D8551;I60485R37072@40758551\x8c1@>0722E514750514727F61:" #(type-error
   length= princ "type error: expected " ", got " print caddr bounds-error "index "
   " out of bounds for " unbound-error "eval: variable " " has no value" error
   "error: " load-error print-exception "in file " list? ": " #fn(string?)
@@ -349,12 +345,11 @@
 	    print-stack-trace #fn("@000n1DD\x8a5\x8a6852085>1_4862185>1_472730r3523F074075370r5@40r452@30051767728292:505252E\x8a97;2<868889>38762:" #(#fn("=000n32005182P2105121151C?022232487e361:25051E76278851512888A187>4|:" #(#fn(function:name)
   #fn(function:code) #fn(raise) thrown-value ffound #fn(function:vals) 1- #fn(length)
   #fn("8000n170A0G513>0F<A0G929363:D:" #(closure?))) find-in-f)
-  #fn(";000n220A01>321{863I02273242576865152275261:28:" #(#fn("8000n07021AF>292524O:" #(for-each
+  #fn(";000n220A01>321{863I02273247576865152275261:28:" #(#fn("8000n07021AF>292524O:" #(for-each
   #fn("8000n1A<0Fq63:" #()))) #fn("6000n10B;3B040<20Q;38040T21Q38072061:23061:" #(thrown-value
-  ffound caddr #fn(raise))) #fn(symbol) string-join #fn(map)
-							  #fn(string) reverse!
-							  "/" λ) fn-name)
-  reverse! length> list-tail *interactive* filter closure? #fn(map)
+  ffound caddr #fn(raise))) #fn(symbol) string-join #fn(map) string reverse! "/"
+							  λ) fn-name) reverse!
+  length> list-tail *interactive* filter closure? #fn(map)
   #fn("6000n10Z;380420061:" #(#fn(top-level-value)))
   #fn(environment) for-each #fn("8000n170A<0KGF5271051==P5147250492<El3?0730KG0EG52@30O49292<KM_:" #(print
   vector->list newline disassemble))) print-stack-trace)
@@ -363,15 +358,17 @@
 							      #fn(iostream->string)) print-to-string)
 	    printable? #fn("6000n120051;I80421051S:" #(#fn(iostream?)
 						       #fn(eof-object?)) printable?)
-	    quote-value #fn("6000n1700513400:210e2:" #(self-evaluating? quote) quote-value)
+	    procedure? #.function? quote-value
+	    #fn("6000n1700513400:210e2:" #(self-evaluating? quote) quote-value)
 	    quoted? #fn("6000n10<20Q:" #(quote) quoted?) random
 	    #fn("7000n1200513<0712250062:23500i2:" #(#fn(integer?) mod #fn(rand)
 						     #fn(rand-double)) random)
-	    read-all #fn("7000n17021062:" #(read-all-of #fn(read)) read-all)
+	    read-all #fn("7000n17071062:" #(read-all-of read) read-all)
 	    read-all-of #fn(":000n2D\x8a686201860>3_486<\x8c1q015162:" #(#fn("8000n220A5138071061:F<10P92A5162:" #(#fn(io-eof?)
   reverse!))) read-all-of)
-	    ref-int16-LE #fn(":000n2702101EMGE522101KMGr852M61:" #(int16 #fn(ash)) ref-int16-LE)
-	    ref-int32-LE #fn("<000n2702101EMGE522101KMGr8522101r2MGr@522101r3MGrH52g461:" #(int32
+	    ref-int16-LE #fn(":000n2202101EMGE522101KMGr852M61:" #(#fn(int16)
+								   #fn(ash)) ref-int16-LE)
+	    ref-int32-LE #fn("<000n2202101EMGE522101KMGr8522101r2MGr@522101r3MGrH52g461:" #(#fn(int32)
   #fn(ash)) ref-int32-LE)
 	    repl #fn(":000n0DD\x8a4\x8a58420_485218485>2_485<5047260:" #(#fn("8000n0702151422735142425{267751S;3F04788451798551485w:4D:" #(princ
   "> " #fn(io-flush) *output-stream* #fn("5000n02060:" #(#fn(read)))
@@ -427,10 +424,11 @@
 	    table-values #fn("8000n12021q063:" #(#fn(table-foldl)
 						 #fn("6000n3182P:" #())) table-values)
 	    to-proper #fn("7000n10J400:0H3600e1:0<700=51P:" #(to-proper) to-proper)
-	    top-level-exception-handler #fn("9000n17071w042285>1230>12486>1{86504:" #(*output-stream*
-  *stderr* #fn("5000n0Aw0:" #(*output-stream*))
-  #fn("6000n070A51471225061:" #(print-exception print-stack-trace #fn(stacktrace)))
-  #fn("6000n1A50420061:" #(#fn(raise)))) top-level-exception-handler)
+	    top-level-bound? #.bound? top-level-exception-handler
+	    #fn("9000n17071w042285>1230>12486>1{86504:" #(*output-stream*
+							  *stderr* #fn("5000n0Aw0:" #(*output-stream*))
+							  #fn("6000n070A51471225061:" #(print-exception
+  print-stack-trace #fn(stacktrace))) #fn("6000n1A50420061:" #(#fn(raise)))) top-level-exception-handler)
 	    trace #fn("A000n1200512150728551Ig0230742586262728290e286e3e22:e12;2985e286e3e4e35152@30D\x8c1\x8c142<:" #(#fn(top-level-value)
   #fn(gensym) traced? #fn(set-top-level-value!) eval λ begin write cons quote
   newline apply ok) trace)