summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/lib.c b/lib.c
index e3390559..5bf37ed4 100644
--- a/lib.c
+++ b/lib.c
@@ -1170,12 +1170,20 @@ cnum c_num(val num);
val eql(val left, val right)
{
- /* eql is same as eq for now, but when we get bignums,
- eql will compare different bignum objects which are
- the same number as equal. */
- if (type(left) == BGNUM)
+ /* eql is the same as eq except that numbers
+ are compared by value. This means that bignum and
+ floatinmg point objects which are distinct are
+ treated through the equal function. */
+ if (left == right)
+ return t;
+
+ switch (type(left)) {
+ case BGNUM:
+ case FLNUM:
return equal(left, right);
- return eq(left, right);
+ default:
+ return nil;
+ }
}
val equal(val left, val right)