History

add equal?

Sigrid Haflínudóttir committed 6 years ago

Commit 927bc581 parent acabca52 files · +17 −1Browse files

Unified · Split

2 files
  1. README.md +1 −0
  2. aa.c +16 −1
README.md+1−0
@@ -53,6 +53,7 @@ atom? · 52 unmodified lines
5353 boolean?
5454 defined?
5555 eq?
56+equal?
5657 nan?
5758 null?
5859 number?
aa.c+16−1
@@ -63,6 +63,7 @@ enum { · 62 unmodified lines
6363 P_NOT,
6464 P_DISPLAY,
6565 P_EQ_HUH,
66+ P_EQUAL_HUH,
6667 P_ATOM_HUH,
6768 P_NUMBER_HUH,
6869 P_BOOLEAN_HUH,
@@ -103,6 +104,7 @@ static const char *primnames[P_MAX] = { · 34 unmodified lines
103104 "not",
104105 "display",
105106 "eq?",
107+ "equal?",
106108 "atom?",
107109 "number?",
108110 "boolean?",
@@ -299,7 +301,7 @@ equal(aaObject *a, aaObject *b) · 190 unmodified lines
299301 if(a == b)
300302 return 1;
301303
302− if(TYPE(a) != TYPE(b))
304+ if(TYPE(a) != TYPE(b) || TYPE(a) == AA_TBOOL)
303305 return 0;
304306
305307 if(TYPE(a) == AA_TNUMBER)
@@ -313,6 +315,14 @@ equal(aaObject *a, aaObject *b) · 7 unmodified lines
313315 return a == b;
314316 }
315317
318+ if(TYPE(a) == AA_TPAIR){
319+ for(; !ISNULL(a); a = CDR(a), b = CDR(b)){
320+ if(!equal(CAR(a), CAR(b)))
321+ return 0;
322+ }
323+ return a == b;
324+ }
325+
316326 return 0;
317327 }
318328
@@ -882,6 +892,11 @@ eval(aaContext *ctx, aaObject *obj, aaObject *env, aaObject **newenv) · 563 unmodified lines
882892 noargs();
883893 break;
884894
895+ case P_EQUAL_HUH:
896+ res = aa_bool(ctx, equal(evalarg(), evalarg()));
897+ noargs();
898+ break;
899+
885900 case P_ATOM_HUH:
886901 res = aa_bool(ctx, aa_type(ctx, evalarg()) != AA_TPAIR);
887902 noargs();

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t