summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/scheme/eval.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/trunk/modules/scheme/eval.hpp')
-rw-r--r--sca-cpp/trunk/modules/scheme/eval.hpp66
1 files changed, 33 insertions, 33 deletions
diff --git a/sca-cpp/trunk/modules/scheme/eval.hpp b/sca-cpp/trunk/modules/scheme/eval.hpp
index 05293a53d3..34d1a7bc17 100644
--- a/sca-cpp/trunk/modules/scheme/eval.hpp
+++ b/sca-cpp/trunk/modules/scheme/eval.hpp
@@ -36,7 +36,7 @@
namespace tuscany {
namespace scheme {
-const value evalExpr(const value& exp, Env& env, const gc_pool& pool);
+const value evalExpr(const value& exp, Env& env);
const value compoundProcedureSymbol("compound-procedure");
const value procedureSymbol("procedure");
@@ -86,10 +86,10 @@ const list<value> operands(const value& exp) {
return cdr((list<value> )exp);
}
-const list<value> listOfValues(const list<value> exps, Env& env, const gc_pool& pool) {
+const list<value> listOfValues(const list<value> exps, Env& env) {
if(isNil(exps))
return list<value> ();
- return cons(evalExpr(car(exps), env, pool), listOfValues(cdr(exps), env, pool));
+ return cons(evalExpr(car(exps), env), listOfValues(cdr(exps), env));
}
const value applyOperat(const value& exp) {
@@ -132,19 +132,19 @@ const value makeBegin(const list<value> seq) {
return cons(beginSymbol, seq);
}
-const value evalSequence(const list<value>& exps, Env& env, const gc_pool& pool) {
+const value evalSequence(const list<value>& exps, Env& env) {
if(isLastExp(exps))
- return evalExpr(firstExp(exps), env, pool);
- evalExpr(firstExp(exps), env, pool);
- return evalSequence(restExp(exps), env, pool);
+ return evalExpr(firstExp(exps), env);
+ evalExpr(firstExp(exps), env);
+ return evalSequence(restExp(exps), env);
}
-const value applyProcedure(const value& procedure, list<value>& arguments, const gc_pool& pool) {
+const value applyProcedure(const value& procedure, list<value>& arguments) {
if(isPrimitiveProcedure(procedure))
return applyPrimitiveProcedure(procedure, arguments);
if(isCompoundProcedure(procedure)) {
- Env env = extendEnvironment(procedureParameters(procedure), arguments, procedureEnvironment(procedure), pool);
- return evalSequence(procedureBody(procedure), env, pool);
+ Env env = extendEnvironment(procedureParameters(procedure), arguments, procedureEnvironment(procedure));
+ return evalSequence(procedureBody(procedure), env);
}
logStream() << "Unknown procedure type " << procedure << endl;
return value();
@@ -218,41 +218,41 @@ value condToIf(const value& exp) {
return expandClauses(condClauses(exp));
}
-value evalIf(const value& exp, Env& env, const gc_pool& pool) {
- if(isTrue(evalExpr(ifPredicate(exp), env, pool)))
- return evalExpr(ifConsequent(exp), env, pool);
- return evalExpr(ifAlternative(exp), env, pool);
+value evalIf(const value& exp, Env& env) {
+ if(isTrue(evalExpr(ifPredicate(exp), env)))
+ return evalExpr(ifConsequent(exp), env);
+ return evalExpr(ifAlternative(exp), env);
}
-const value evalDefinition(const value& exp, Env& env, const gc_pool& pool) {
- defineVariable(definitionVariable(exp), evalExpr(definitionValue(exp), env, pool), env);
+const value evalDefinition(const value& exp, Env& env) {
+ defineVariable(definitionVariable(exp), evalExpr(definitionValue(exp), env), env);
return definitionVariable(exp);
}
-const value evalExpr(const value& exp, Env& env, const gc_pool& pool) {
+const value evalExpr(const value& exp, Env& env) {
if(isSelfEvaluating(exp))
return exp;
if(isQuoted(exp))
return textOfQuotation(exp);
if(isDefinition(exp))
- return evalDefinition(exp, env, pool);
+ return evalDefinition(exp, env);
if(isIf(exp))
- return evalIf(exp, env, pool);
+ return evalIf(exp, env);
if(isBegin(exp))
- return evalSequence(beginActions(exp), env, pool);
+ return evalSequence(beginActions(exp), env);
if(isCond(exp))
- return evalExpr(condToIf(exp), env, pool);
+ return evalExpr(condToIf(exp), env);
if(isLambdaExpr(exp))
return makeProcedure(lambdaParameters(exp), lambdaBody(exp), env);
if(isVariable(exp))
return lookupVariableValue(exp, env);
if(isApply(exp)) {
- list<value> applyOperandValues = evalExpr(applyOperand(exp), env, pool);
- return applyProcedure(evalExpr(applyOperat(exp), env, pool), applyOperandValues, pool);
+ list<value> applyOperandValues = evalExpr(applyOperand(exp), env);
+ return applyProcedure(evalExpr(applyOperat(exp), env), applyOperandValues);
}
if(isApplication(exp)) {
- list<value> operandValues = listOfValues(operands(exp), env, pool);
- return applyProcedure(evalExpr(operat(exp), env, pool), operandValues, pool);
+ list<value> operandValues = listOfValues(operands(exp), env);
+ return applyProcedure(evalExpr(operat(exp), env), operandValues);
}
logStream() << "Unknown expression type " << exp << endl;
return value();
@@ -267,22 +267,22 @@ const list<value> quotedParameters(const list<value>& p) {
/**
* Evaluate an expression against a script provided as a list of values.
*/
-const value evalScriptLoop(const value& expr, const list<value>& script, scheme::Env& env, const gc_pool& pool) {
+const value evalScriptLoop(const value& expr, const list<value>& script, scheme::Env& env) {
if (isNil(script))
- return scheme::evalExpr(expr, env, pool);
- scheme::evalExpr(car(script), env, pool);
- return evalScriptLoop(expr, cdr(script), env, pool);
+ return scheme::evalExpr(expr, env);
+ scheme::evalExpr(car(script), env);
+ return evalScriptLoop(expr, cdr(script), env);
}
-const value evalScript(const value& expr, const value& script, Env& env, const gc_pool& pool) {
- return evalScriptLoop(expr, script, env, pool);
+const value evalScript(const value& expr, const value& script, Env& env) {
+ return evalScriptLoop(expr, script, env);
}
/**
* Evaluate an expression against a script provided as an input stream.
*/
-const value evalScript(const value& expr, istream& is, Env& env, const gc_pool& pool) {
- return evalScript(expr, readScript(is), env, pool);
+const value evalScript(const value& expr, istream& is, Env& env) {
+ return evalScript(expr, readScript(is), env);
}
}