|
@@ -93,10 +93,21 @@ public class LispImpl implements Lisp {
|
|
|
return LispElement.generate(result);
|
|
|
});
|
|
|
operators.put("=", (lisp) -> {
|
|
|
- if(lisp.size() != 2) {
|
|
|
+ if(lisp.size() == 0) {
|
|
|
throw new LispError(LispError.ERR_NUM_ARG);
|
|
|
}
|
|
|
- boolean result = getElement(lisp.car()).toNumber() == getElement(lisp.cdr().car()).toNumber();
|
|
|
+ boolean result = true;
|
|
|
+ boolean first = true;
|
|
|
+ double value = 0;
|
|
|
+ while(!lisp.isEmpty()) {
|
|
|
+ if(first) {
|
|
|
+ value = getElement(lisp.car()).toNumber();
|
|
|
+ first = false;
|
|
|
+ } else {
|
|
|
+ result = result && (value == getElement(lisp.car()).toNumber());
|
|
|
+ }
|
|
|
+ lisp = lisp.cdr();
|
|
|
+ }
|
|
|
return LispElement.generate(result);
|
|
|
});
|
|
|
operators.put("+", (lisp) -> {
|