diff options
Diffstat (limited to 'cpp/sca/modules')
-rw-r--r-- | cpp/sca/modules/eval/environment.hpp | 10 | ||||
-rw-r--r-- | cpp/sca/modules/eval/eval.hpp | 12 | ||||
-rw-r--r-- | cpp/sca/modules/eval/primitive.hpp | 6 | ||||
-rw-r--r-- | cpp/sca/modules/eval/read.hpp | 2 |
4 files changed, 15 insertions, 15 deletions
diff --git a/cpp/sca/modules/eval/environment.hpp b/cpp/sca/modules/eval/environment.hpp index 4abf558cfa..671175b96d 100644 --- a/cpp/sca/modules/eval/environment.hpp +++ b/cpp/sca/modules/eval/environment.hpp @@ -80,16 +80,16 @@ const bool isDotVariable(const value& var) { } const Frame makeBinding(const Frame& frameSoFar, const list<value>& variables, const list<value> values) { - if (variables == list<value>()) { - if (values != list<value>()) + if (isNil(variables)) { + if (!isNil(values)) std::cout << "Too many arguments supplied " << values << "\n"; return frameSoFar; } if (isDotVariable(car(variables))) return makeBinding(frameSoFar, cdr(variables), makeList<value>(values)); - if (values == list<value>()) { - if (variables != list<value>()) + if (isNil(values)) { + if (!isNil(variables)) std::cout << "Too few arguments supplied " << variables << "\n"; return frameSoFar; } @@ -158,7 +158,7 @@ const Env setupEnvironment() { const value lookupEnvLoop(const value& var, const Env& env); const value lookupEnvScan(const value& var, const list<value>& vars, const list<value>& vals, const Env& env) { - if(vars == list<value> ()) + if(isNil(vars)) return lookupEnvLoop(var, enclosingEnvironment(env)); if(var == car(vars)) return car(vals); diff --git a/cpp/sca/modules/eval/eval.hpp b/cpp/sca/modules/eval/eval.hpp index 783f5c6447..0f6ef77904 100644 --- a/cpp/sca/modules/eval/eval.hpp +++ b/cpp/sca/modules/eval/eval.hpp @@ -87,7 +87,7 @@ const list<value> operands(const value& exp) { } const list<value> listOfValues(const list<value> exps, Env& env) { - if(exps == list<value> ()) + if(isNil(exps)) return list<value> (); return cons(eval(car(exps), env), listOfValues(cdr(exps), env)); } @@ -117,7 +117,7 @@ const Env procedureEnvironment(const value& exp) { } const bool isLastExp(const list<value>& seq) { - return cdr(seq) == list<value> (); + return isNil(cdr(seq)); } const value firstExp(const list<value>& seq) { @@ -151,7 +151,7 @@ const value applyProcedure(const value& procedure, list<value>& arguments) { } const value sequenceToExp(const list<value> exps) { - if(exps == list<value> ()) + if(isNil(exps)) return list<value>(); if(isLastExp(exps)) return firstExp(exps); @@ -179,7 +179,7 @@ const value ifConsequent(const value& exp) { } const value ifAlternative(const value& exp) { - if(cdr(cdr(cdr((list<value> )exp))) != list<value> ()) + if(!isNil(cdr(cdr(cdr((list<value> )exp))))) return car(cdr(cdr(cdr((list<value> )exp)))); return false; } @@ -201,12 +201,12 @@ const value makeIf(value predicate, value consequent, value alternative) { } const value expandClauses(const list<value>& clauses) { - if(clauses == list<value> ()) + if(isNil(clauses)) return false; const value first = car(clauses); const list<value> rest = cdr(clauses); if(isCondElseClause(first)) { - if(rest == list<value> ()) + if(isNil(rest)) return sequenceToExp(condActions(first)); std::cout << "else clause isn't last " << clauses << "\n"; return value(); diff --git a/cpp/sca/modules/eval/primitive.hpp b/cpp/sca/modules/eval/primitive.hpp index c31f276e2f..ece89e077d 100644 --- a/cpp/sca/modules/eval/primitive.hpp +++ b/cpp/sca/modules/eval/primitive.hpp @@ -70,13 +70,13 @@ const value valueEqual(list<value>& args) { } const value valueAdd(list<value>& args) { - if (cdr(args) == list<value>()) + if (isNil(cdr(args))) return (double)car(args); return (double)car(args) + (double)cadr(args); } const value valueSub(list<value>& args) { - if (cdr(args) == list<value>()) + if (isNil(cdr(args))) return (double)0 - (double)car(args); return (double)car(args) - (double)cadr(args); } @@ -95,7 +95,7 @@ const value valueDisplay(list<value>& args) { } const value valueComment(list<value>& args) { - *evalOut << "# " << car(args); + *evalOut << "; " << car(args); return true; } diff --git a/cpp/sca/modules/eval/read.hpp b/cpp/sca/modules/eval/read.hpp index a6e581c416..9266498d99 100644 --- a/cpp/sca/modules/eval/read.hpp +++ b/cpp/sca/modules/eval/read.hpp @@ -134,7 +134,7 @@ const list<value> readList(const list<value>& listSoFar, std::istream& in) { } const std::string listToString(const list<char>& l) { - if(l == list<char> ()) + if(isNil(l)) return ""; return car(l) + listToString(cdr(l)); } |