mirror of
https://github.com/janet-lang/janet
synced 2024-11-24 01:17:16 +00:00
Fix polymorphic support in compare
This commit is contained in:
parent
872b39cc32
commit
1f074671ce
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user