shithub: femtolisp

Download patch

ref: 65768a9d793f09ec721a441c2e7ecfca3e592530
parent: 9e683ae8cde8033a158230841ad97866e49b27cb
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Tue Dec 24 23:50:02 EST 2024

boot image: exclude *prompt*

--- a/flisp.boot
+++ b/flisp.boot
@@ -14,8 +14,7 @@
 	      #fn("6000n201l:" #()) #fn("6000n201m:" #()) 0 #fn("8000z0700}2:" #(vector))
 	      #fn("8000z0700}2:" #(aset!)) 0 0 0 0 0 0 0 0 0 0 0 #fn("9000n3012082>1|:" #(#fn("6000n1A061:" #())))
 	      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #fn("8000z0700}2:" #(aref)) 0 0)
-	    *prompt* #fn("6000n0702161:" #(princ "#;> ")) *properties*
-	    #table(*funvars* #table(void? (x)  length= (lst n)  help (term)  void rest  *prompt* nil  vm-stats nil)  *doc* #table(void? "Return #t if x is #<void> and #f otherwise."  length= "Bounded length test.\nUse this instead of (= (length lst) n), since it avoids unnecessary\nwork and always terminates."  help "Display documentation for the specified term, if available."  void "Return the constant #<void> while ignoring any arguments.\n#<void> is mainly used when a function has side effects but does not\nproduce any meaningful value to return, so even though #t or nil could\nbe returned instead, in case of #<void> alone, REPL will not print\nit."  *prompt* "Function called by REPL to signal the user input is required.\nDefault function prints \"#;> \"."  vm-stats "Print various VM-related information, such as the number of GC calls\nso far, heap and stack size, etc."  *properties* "All properties of symbols recorded with putprop are recorded in this table."))
+	    *properties* #table(*funvars* #table(void? (x)  length= (lst n)  help (term)  void rest  *prompt* nil  vm-stats nil)  *doc* #table(void? "Return #t if x is #<void> and #f otherwise."  length= "Bounded length test.\nUse this instead of (= (length lst) n), since it avoids unnecessary\nwork and always terminates."  help "Display documentation for the specified term, if available."  void "Return the constant #<void> while ignoring any arguments.\n#<void> is mainly used when a function has side effects but does not\nproduce any meaningful value to return, so even though #t or nil could\nbe returned instead, in case of #<void> alone, REPL will not print\nit."  *prompt* "Function called by REPL to signal the user input is required.\nDefault function prints \"#;> \"."  vm-stats "Print various VM-related information, such as the number of GC calls\nso far, heap and stack size, etc."  *properties* "All properties of symbols recorded with putprop are recorded in this table."))
 	    *runestring-type* (array rune) *string-type* (array byte)
 	    *syntax-environment* #table(unwind-protect #fn("A000n220502050218722q1e3e2e1232402286e12587e12686e2e3e3e387e1e3e3:" #(#fn(gensym)
   let λ prog1 trycatch begin raise))  help #fn("<000n170021527002252853\\0738551474504863B07450475086P51@30O47450@B0732627051524745047860:" #(getprop
@@ -275,7 +274,7 @@
 	    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?
-	    #fn("6000n10V;I@040B;3904700=61:" #(list?) list?) load #fn("9000n120021522285>123850>2{:" #(#fn(file)
+	    #fn("6000n10V;I@040B;3904700=61:" #(list?) list?) load #fn("9000n120071522285>123850>2{:" #(#fn(file)
   :read #fn("9000n0\x8d\x8a48420A84>2_484<^1\x8d\x8d\x8d63:" #(#fn("9000n320A51IB0F<21A5107215163:23A51472161:" #(#fn(io-eof?)
   #fn(read) load-process #fn(io-close))))) #fn("8000n120A5142122F0e361:" #(#fn(io-close)
 									   #fn(raise) load-error))) load)
@@ -294,14 +293,16 @@
   #fn("=000n120r20i2O52\x8d\x8a68621A085F86>5_486<^19261:" #(#fn(vector-alloc)
 							     #fn(":000n10B3p070051r2A<85F52i29286G3;093<FKM61:928685p49286KM71051p494<0=61:92:" #(caar
   cdar)))) #fn(length)) make-perfect-hash-table)
-	    make-system-image #fn("<000n120021222354247576Dw54Dw64278788>2288685>22989>1{89504:" #(#fn(file)
+	    make-system-image #fn("<000n120071727354247576Dw54Dw64278788>2288685>22989>1{89504:" #(#fn(file)
   :write :create :truncate (*linefeed* *directory-separator* *argv* that *print-pretty*
 				       *print-width* *print-readably* *print-level* *print-length*
-				       *os-name* *interactive*) *print-pretty* *print-readably* #fn("5000n0Aw04Fw1:" #(*print-pretty*
-  *print-readably*)) #fn("=000n07021A>1722350515224752677842678845253f2F52429F7:52^142;F61:" #(filter
-  #fn("8000n10Z;3u0420051S;3j0421051[S;IC0422051222105151dS;3I04230A52S;3=04242105151S:" #(#fn(constant?)
+				       *os-name* *interactive* *prompt*) *print-pretty*
+  *print-readably* #fn("5000n0Aw04Fw1:" #(*print-pretty* *print-readably*))
+  #fn("=000n07021A>1722350515224752677842678845253f2F52429F7:52^142;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) nconc #fn(map) list 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("8000n21\x8d1B3B04101<51_41=?1@\x1d/4:" #() map!) map-int
 	    #fn(";000n2701E52340q:0E51qPq\x8a78786_4K7115122870>2|486:" #(<= 1- #fn("7000n1A<F051qPN4AA<=_:" #())) map-int)
--- a/system.lsp
+++ b/system.lsp
@@ -1051,7 +1051,8 @@
   (let ((f (file fname :write :create :truncate))
         (excludes '(*linefeed* *directory-separator* *argv* that
                     *print-pretty* *print-width* *print-readably*
-                    *print-level* *print-length* *os-name* *interactive*)))
+                    *print-level* *print-length* *os-name* *interactive*
+                    *prompt*)))
     (with-bindings ((*print-pretty* #t)
                     (*print-readably* #t))
       (let ((syms