def evalApplication(exp, env, cont): def c1(operator_val): def c2(operands_val): return apply(operator_val, operands_val, env, cont) return evalRands(expressions.operands(exp), env, c2) return teval(expressions.operator(exp), env, c1)
def analyzeApplication(exp): analyzedOperator = analyze(expressions.operator(exp)) analyzedOperands = analyzeOperands(expressions.operands(exp)) def analyzed(env, cont): def c_operator_exec(operatorVal): def c_operands_exec(operandVals): return pogo.bounce(apply, operatorVal, operandVals, env, cont) return pogo.bounce(analyzedOperands, env, c_operands_exec) return pogo.bounce(analyzedOperator, env, c_operator_exec) return analyzed