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:56:17 +0000 (18:56 -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 9e854528f1bbc861af82ac8b507d71025194253f..0d6bf534e2a40edd5d3d2e50888b3ceb3c46e31d 100644 (file)
@@ -90,12 +90,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))