diff options
-rw-r--r-- | src/jvm/clojure/lang/Num.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 11 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/Num.java b/src/jvm/clojure/lang/Num.java index 5d8df4f5..7c5e0526 100644 --- a/src/jvm/clojure/lang/Num.java +++ b/src/jvm/clojure/lang/Num.java @@ -144,6 +144,8 @@ static public Num divide(BigInteger n, BigInteger d){ } static public boolean equiv(Object x, Object y){ + if(!(y instanceof Number && x instanceof Number)) + return false; return Num.from(x).equiv(Num.from(y)); } diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 4edfc3bd..6937afcb 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -208,8 +208,15 @@ static public int nextID(){ } static public boolean equal(Object k1, Object k2){ - return k1 == k2 || - (k1 != null && k1.equals(k2)); + if(k1 == k2) + return true; + if(k1 != null) + { + if(k1 instanceof Number) + return Num.equiv(k1, k2); + return k1.equals(k2); + } + return false; } //static public Object eq(Object arg1, Object arg2){ |