Change symbol<? to delegate to bytevector<?.
authorChris Hanson <org/chris-hanson/cph>
Sat, 20 Jul 2019 08:33:57 +0000 (04:33 -0400)
committerChris Hanson <org/chris-hanson/cph>
Sat, 20 Jul 2019 22:51:53 +0000 (18:51 -0400)
This is much faster than string comparison, which matters since symbols should
be fast.  The downside is that symbols and strings will sort somewhat
differently, but that shouldn't matter since someone can always sort them using
symbol->string.

src/runtime/symbol.scm

index b3867ddd1b3f1ebcdaccf4b3f5b00eaf13a8bd40..c355f4636adb913fe38961d6fd35a60753f050e7 100644 (file)
@@ -91,12 +91,8 @@ USA.
   (string-hash (symbol->string symbol) modulus))
 
 (define (symbol<? x y)
-  (let ((sx (symbol->string x))
-       (sy (symbol->string y)))
-    (or (string<? sx sy)
-       (and (string=? sx sy)
-            (interned-symbol? sx)
-            (uninterned-symbol? sy)))))
+  (bytevector<? (->bytes (system-pair-car x))
+               (->bytes (system-pair-car y))))
 
 (define (symbol>? x y)
   (symbol<? y x))