Tweak EQUALITY-PREDICATE to do what it's called.
authorChris Hanson <org/chris-hanson/cph>
Tue, 22 Sep 2009 13:58:30 +0000 (06:58 -0700)
committerChris Hanson <org/chris-hanson/cph>
Tue, 22 Sep 2009 13:58:30 +0000 (06:58 -0700)
src/runtime/structure-parser.scm

index 0a12c2ab8ba884e353a67df9c808a85777e9ca9c..a49d27e6fe1db1472f611e1142745ccd48b85821 100644 (file)
@@ -220,7 +220,7 @@ USA.
     env
     (make-object-parser
      (lambda (item win lose)
-       `(IF ,(equality-predicate item (cadr pattern))
+       `(IF (,(equality-predicate (cadr pattern)) ,item ',(cadr pattern))
            (,win ,(single-val item) ,lose)
            (,lose))))))
 
@@ -229,20 +229,18 @@ USA.
     env
     (make-object-parser
      (lambda (item win lose)
-       `(IF ,(equality-predicate item (cadr pattern))
+       `(IF (,(equality-predicate (cadr pattern)) ,item ',(cadr pattern))
            (,win ,(null-vals) ,lose)
            (,lose))))))
 
-(define (equality-predicate item datum)
-  `(,(cond ((or (symbol? datum)
-               (char? datum)
-               (boolean? datum)
-               (null? datum))
-           'EQ?)
-          ((number? datum) 'EQV?)
-          (else 'EQUAL?))
-    ,item
-    ',datum))
+(define (equality-predicate datum)
+  (cond ((or (symbol? datum)
+            (char? datum)
+            (boolean? datum)
+            (null? datum))
+        'EQ?)
+       ((number? datum) 'EQV?)
+       (else 'EQUAL?)))
 
 (define-context-method 'VALUES 'OBJECT
   (lambda (vals)