shithub: sl

Download patch

ref: 8e953a26546248dece2348fd8c98e594b8bfa9df
parent: 6fb39cada9341c71ed697f74a05b241348bd412b
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Mon Mar 17 18:30:50 EDT 2025

rename char-* and str-char to rune-* and str-rune to avoid confusion with C definition of 'char' vs 'rune'

--- a/boot/sl.boot
+++ b/boot/sl.boot
@@ -128,9 +128,9 @@
 xnum?  #.atom? atom?  #.= =  #.num? num?  #.* *)))
             caaaar #fn("n10<<<<:" #() caaaar) caaadr
             #fn("n10T<<:" #() caaadr) caaar #fn("n10<<<:" #() caaar) caadar
-10=T<:" #() caaddr) caadr
-            #fn("n10T<:" #() caadr) caar #fn("n10<<:" #() caar) cadaar
-            #fn("n10<<T:" #() cadaar) cadadr #fn("n10TT:" #() cadadr) cadar
+10=T<:" #() caaddr) caadr
+            #fn("n10T<:" #() caadr) caar #fn("n10<<:" #() caar) cadaar
+            #fn("n10<<T:" #() cadaar) cadadr #fn("n10TT:" #() cadadr) cadar
 #fn("n10=T:" #() caddr) call-with-values
             #fn("n205086B3@0A86<C90186=}2:18661:" #() #(#3=(*values*))) capture-var! #fn("n20r3G70186E5387;JG042186510r322861e152p4:" #(index-of
   #fn(length) #fn(nconc)) capture-var!)
@@ -393,7 +393,9 @@
 h)) ref-s16-LE)
             ref-s32-LE #fn("n2202101EMGE522101KMGr8522101r2MGr@522101r3MGrH52g461:" #(#fn(s32)
                                                                                       #fn(ash)) ref-s32-LE)
-11q5386;3F042286052;3:042386062:" #(#fn(get) *properties* #fn(has?)
+11q5386;3F042286052;3:042386062:" #(#fn(get) *properties* #fn(has?)
+                                                                  #fn(del!)) remprop)
+            repl #fn("n0IIb4b5208421_5142085228485>2_51485<5047360:" #(#0#
 )
             repl #fn("n0IIb4b5208421_5142085228485>2_51485<5047360:" #(#0#
                                                                        #fn("n07050421725142324{257651S;3Z04778451788551360q@=079855147:5047;85w<61:" #(*prompt*
@@ -406,7 +408,7 @@
 " #(reverse-) reverse) reverse! #fn("n170q062:" #(reverse!-) reverse!)
             reverse!- #fn("n2I1B3B041=101?04N4?1@\x1d/40:" #() reverse!-) reverse-
             #fn("n21J400:701<0P1=62:" #(reverse-) reverse-) self-evaluating? #fn("n120051S;3Z040H;36040RS;JK0421051;3A040R;3:04022051Q:" #(#fn(gensym?)
-n(gensym?)
+n(gensym?)
 
             set-syntax! #fn("n220710163:" #(#fn(put!)
                                             *syntax-environment*) set-syntax!)
@@ -413,8 +415,8 @@
  unquote length>) splice-form?)
             str-join #fn("n20J5020:215022860<5242324861>20=524258661:" #("" #fn(buffer)
                                                                          #fn(io-write)
-                                                #fn("n120AF52420A062:" #(#fn(io-write)))
-                                                                         #fn(io->str)) str-join)
+                                                #fn("n120AF52420A062:" #(#fn(io-write)))
+                                                                         #fn(io->str)) str-join)
 r-lpad #fn("n3207182122051~52062:" #(#fn(str) str-rep #fn(str-length)) str-lpad)
             str-map #fn("n2205021151EI8887L23O0422860231885251524748851?8@\f/^14758661:" #(#fn(buffer)
   #fn(str-length) #fn(io-putc) #fn(str-char) 1+ ios->str) str-map)
--- a/src/str.c
+++ b/src/str.c
@@ -231,7 +231,7 @@
 	return ns;
 }
 
-BUILTIN("str-char", str_char)
+BUILTIN("str-rune", str_rune)
 {
 	argcount(nargs, 2);
 	char *s = tostr(args[0]);
@@ -246,7 +246,7 @@
 	return mk_rune(r);
 }
 
-BUILTIN("char-upcase", char_upcase)
+BUILTIN("rune-upcase", rune_upcase)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
@@ -255,7 +255,7 @@
 	return mk_rune(toupperrune(*(Rune*)cp_data(cp)));
 }
 
-BUILTIN("char-downcase", char_downcase)
+BUILTIN("rune-downcase", rune_downcase)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
@@ -264,7 +264,7 @@
 	return mk_rune(tolowerrune(*(Rune*)cp_data(cp)));
 }
 
-BUILTIN("char-titlecase", char_titlecase)
+BUILTIN("rune-titlecase", rune_titlecase)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
@@ -274,7 +274,7 @@
 }
 
 sl_purefn
-BUILTIN("char-alphabetic?", char_alphabeticp)
+BUILTIN("rune-alphabetic?", rune_alphabeticp)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
@@ -284,7 +284,7 @@
 }
 
 sl_purefn
-BUILTIN("char-lower-case?", char_lower_casep)
+BUILTIN("rune-lower-case?", rune_lower_casep)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
@@ -294,7 +294,7 @@
 }
 
 sl_purefn
-BUILTIN("char-upper-case?", char_upper_casep)
+BUILTIN("rune-upper-case?", rune_upper_casep)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
@@ -304,7 +304,7 @@
 }
 
 sl_purefn
-BUILTIN("char-title-case?", char_title_casep)
+BUILTIN("rune-title-case?", rune_title_casep)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
@@ -314,7 +314,7 @@
 }
 
 sl_purefn
-BUILTIN("char-numeric?", char_numericp)
+BUILTIN("rune-numeric?", rune_numericp)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
@@ -324,7 +324,7 @@
 }
 
 sl_purefn
-BUILTIN("char-whitespace?", char_whitespacep)
+BUILTIN("rune-whitespace?", rune_whitespacep)
 {
 	argcount(nargs, 1);
 	sl_cprim *cp = ptr(args[0]);
--- a/src/system.lsp
+++ b/src/system.lsp
@@ -312,7 +312,7 @@
              xs)
       x0))
 
-(def (char? x)
+(def (rune? x)
   (eq? (typeof x) 'rune))
 
 (def (arr? x)
@@ -869,13 +869,13 @@
   (str-sub s n))
 
 (def (str-trim s at-start at-end)
-  (def (trim-start s chars i L)
-    (if (and (< i L) (str-find chars (str-char s i)))
-        (trim-start s chars (1+ i) L)
+  (def (trim-start s runes i L)
+    (if (and (< i L) (str-find runes (str-rune s i)))
+        (trim-start s runes (1+ i) L)
         i))
-  (def (trim-end s chars i)
-    (if (and (> i 0) (str-find chars (str-char s (1- i))))
-        (trim-end s chars (1- i))
+  (def (trim-end s runes i)
+    (if (and (> i 0) (str-find runes (str-rune s (1- i))))
+        (trim-end s runes (1- i))
         i))
   (let ((L (str-length s)))
     (str-sub s
@@ -887,7 +887,7 @@
         (n (str-length s)))
     (let ((i 0))
       (while (< i n)
-         (io-putc b (f (str-char s i)))
+         (io-putc b (f (str-rune s i)))
          (set! i (1+ i))))
     (ios->str b)))
 
--- a/test/unittest.lsp
+++ b/test/unittest.lsp
@@ -558,53 +558,53 @@
 (assert (equal? (list s2) (str-split s2 "X" :trim T)))
 (assert (equal? (list s2) (str-split s2 "X")))
 
-(assert (equal? #\а (str-char s 10)))
-(assert (equal? #\nul (str-char s 6)))
-(assert-fail (str-char s 11))
+(assert (equal? #\а (str-rune s 10)))
+(assert (equal? #\nul (str-rune s 6)))
+(assert-fail (str-rune s 11))
 
-(assert (equal? #\W (char-upcase #\w)))
-(assert (equal? #\П (char-upcase #\п)))
-(assert (equal? #\nul (char-upcase #\nul)))
+(assert (equal? #\W (rune-upcase #\w)))
+(assert (equal? #\П (rune-upcase #\п)))
+(assert (equal? #\nul (rune-upcase #\nul)))
 
-(assert (char-upper-case? #\W))
-(assert (char-upper-case? #\П))
-(assert (not (char-upper-case? #\nul)))
-(assert (not (char-upper-case? #\w)))
-(assert (not (char-upper-case? #\п)))
-(assert (not (char-upper-case? #\nul)))
+(assert (rune-upper-case? #\W))
+(assert (rune-upper-case? #\П))
+(assert (not (rune-upper-case? #\nul)))
+(assert (not (rune-upper-case? #\w)))
+(assert (not (rune-upper-case? #\п)))
+(assert (not (rune-upper-case? #\nul)))
 
-(assert (equal? #\w (char-downcase #\W)))
-(assert (equal? #\п (char-downcase #\П)))
-(assert (equal? #\nul (char-downcase #\nul)))
+(assert (equal? #\w (rune-downcase #\W)))
+(assert (equal? #\п (rune-downcase #\П)))
+(assert (equal? #\nul (rune-downcase #\nul)))
 
-(assert (char-lower-case? #\w))
-(assert (char-lower-case? #\п))
-(assert (not (char-lower-case? #\nul)))
-(assert (not (char-lower-case? #\W)))
-(assert (not (char-lower-case? #\П)))
-(assert (not (char-lower-case? #\nul)))
+(assert (rune-lower-case? #\w))
+(assert (rune-lower-case? #\п))
+(assert (not (rune-lower-case? #\nul)))
+(assert (not (rune-lower-case? #\W)))
+(assert (not (rune-lower-case? #\П)))
+(assert (not (rune-lower-case? #\nul)))
 
-(assert (char-numeric? #\0))
-(assert (char-numeric? #\9))
-(assert (not (char-numeric? #\⁰)))
-(assert (not (char-numeric? #\q)))
+(assert (rune-numeric? #\0))
+(assert (rune-numeric? #\9))
+(assert (not (rune-numeric? #\⁰)))
+(assert (not (rune-numeric? #\q)))
 
-(assert (char-whitespace? #\space))
-(assert (char-whitespace? #\tab))
-(assert (char-whitespace? #\vtab))
-(assert (char-whitespace? #\newline))
-(assert (char-whitespace? #\x00a0))
-(assert (char-whitespace? #\x3000))
-(assert (not (char-whitespace? #\x200b)))
+(assert (rune-whitespace? #\space))
+(assert (rune-whitespace? #\tab))
+(assert (rune-whitespace? #\vtab))
+(assert (rune-whitespace? #\newline))
+(assert (rune-whitespace? #\x00a0))
+(assert (rune-whitespace? #\x3000))
+(assert (not (rune-whitespace? #\x200b)))
 
-(assert (char-alphabetic? #\q))
-(assert (char-alphabetic? #\й))
-(assert (not (char-alphabetic? #\⁰)))
-(assert (not (char-alphabetic? #\0)))
+(assert (rune-alphabetic? #\q))
+(assert (rune-alphabetic? #\й))
+(assert (not (rune-alphabetic? #\⁰)))
+(assert (not (rune-alphabetic? #\0)))
 
-(assert (not (char-title-case? #\DŽ)))
-(assert (equal? #\Dž (char-titlecase #\DŽ)))
-(assert (char-title-case? #\Dž))
+(assert (not (rune-title-case? #\DŽ)))
+(assert (equal? #\Dž (rune-titlecase #\DŽ)))
+(assert (rune-title-case? #\Dž))
 
 (def s "hello й goodbye")
 (assert (= 6 (str-find s #\й)))