Register char and char-set predicates.
authorChris Hanson <org/chris-hanson/cph>
Sat, 6 May 2017 21:53:35 +0000 (14:53 -0700)
committerChris Hanson <org/chris-hanson/cph>
Sat, 6 May 2017 21:53:35 +0000 (14:53 -0700)
src/runtime/char.scm
src/runtime/chrset.scm

index 78371080e4aae93e0b4e39d92f7cff3f3f8e7fb0..96381169bbc1d140b9b623b37a3b2305cf38ffb4 100644 (file)
@@ -91,13 +91,21 @@ USA.
 
 (define (char=-predicate char)
   (guarantee char? char 'char=-predicate)
-  (lambda (char*)
-    (char=? char* char)))
+  (let ((predicate
+        (lambda (char*)
+          (and (char? char*)
+               (char=? char* char)))))
+    (register-predicate! predicate `(char=-predicate ,char) '<= char?)
+    predicate))
 
 (define (char-ci=-predicate char)
   (guarantee char? char 'char-ci=-predicate)
-  (lambda (char*)
-    (char-ci=? char* char)))
+  (let ((predicate
+        (lambda (char*)
+          (and (char? char*)
+               (char-ci=? char* char)))))
+    (register-predicate! predicate `(char-ci=-predicate ,char) '<= char?)
+    predicate))
 \f
 (define-integrable (%char=? x y)
   (fix:= (char->integer x) (char->integer y)))
index dd33e8b95981a1bc01dc4f3b7dbe25eb32fe7519..96f43acf3c77e78755a2ae810240e17a1afd90d7 100644 (file)
@@ -423,10 +423,13 @@ USA.
              #f)))))
 
 (define (char-set-predicate char-set)
-  (guarantee char-set? char-set 'CHAR-SET-PREDICATE)
-  (lambda (char)
-    (and (bitless-char? char)
-        (char-in-set? char char-set))))
+  (guarantee char-set? char-set 'char-set-predicate)
+  (let ((predicate
+        (lambda (char)
+          (and (bitless-char? char)
+               (char-in-set? char char-set)))))
+    (register-predicate! predicate 'char-set-predicate '<= char?)
+    predicate))
 
 (define (char-set=? char-set . char-sets)
   (every (lambda (char-set*)