Change symbol<? to sort interned symbols before uninterned.
authorChris Hanson <org/chris-hanson/cph>
Mon, 21 May 2018 00:27:50 +0000 (17:27 -0700)
committerChris Hanson <org/chris-hanson/cph>
Mon, 21 May 2018 00:27:50 +0000 (17:27 -0700)
src/runtime/symbol.scm

index 43e31cb69113373b2c046eab2e4e447b5b4bb9e3..b6919bacc8133c7d7cd6d3125c4c22ae44fc2118 100644 (file)
@@ -90,10 +90,15 @@ USA.
   (string-hash (symbol->string symbol) modulus))
 
 (define (symbol<? x y)
-  (string<? (symbol->string x) (symbol->string y)))
+  (let ((sx (symbol->string x))
+       (sy (symbol->string y)))
+    (or (string<? sx sy)
+       (and (string=? sx sy)
+            (interned-symbol? sx)
+            (uninterned-symbol? sy)))))
 
 (define (symbol>? x y)
-  (string<? (symbol->string y) (symbol->string x)))
+  (symbol<? y x))
 \f
 (define generate-uninterned-symbol
   (let ((mutex (make-thread-mutex))