diff --git a/src/boot/boot.janet b/src/boot/boot.janet index 16d4f536..5e9e7f35 100644 --- a/src/boot/boot.janet +++ b/src/boot/boot.janet @@ -819,11 +819,17 @@ (defmacro- do-compare [x y] - ~(if (def f (get ,x :compare)) - (f ,x ,y) - (if (def f (get ,y :compare)) - (- (f ,y ,x)) - (cmp ,x ,y)))) + ~(do + (def f (get ,x :compare)) + (def f-res (if f (f ,x ,y))) + (if f-res + f-res + (do + (def g (get ,y :compare)) + (def g-res (if g (- (g ,y ,x)))) + (if g-res + g-res + (cmp ,x ,y)))))) (defn compare ``Polymorphic compare. Returns -1, 0, 1 for x < y, x = y, x > y respectively.