Name refactoring.

pull/3/head
yhirose 9 years ago
parent 471ed98277
commit 97235c313b
  1. 6
      language/interpreter.cc
  2. 6
      language/interpreter.hpp

@ -103,13 +103,13 @@ private:
if (fv.params.size() <= args.size()) {
auto callEnv = make_shared<Environment>();
callEnv->declare("self", f, false);
callEnv->initialize("self", f, false);
for (auto i = 0u; i < fv.params.size(); i++) {
auto param = fv.params[i];
auto arg = args[i];
auto val = eval(*arg, env);
callEnv->declare(param.name, val, param.mut);
callEnv->initialize(param.name, val, param.mut);
}
return fv.eval(callEnv);
@ -167,7 +167,7 @@ private:
if (env->has(var)) {
env->assign(var, val);
} else {
env->declare(var, val, mut == "mut");
env->initialize(var, val, mut == "mut");
}
return val;
};

@ -217,15 +217,17 @@ struct Environment
outer_->assign(s, val);
return;
}
// NOTREACHED
throw std::logic_error("invalid internal condition.");
}
void declare(const std::string& s, const Value& val, bool mut) {
void initialize(const std::string& s, const Value& val, bool mut) {
assert(!has(s));
dic_[s] = Symbol{val, mut};
}
void setup_built_in_functions() {
declare(
initialize(
"pp",
Value(Value::FunctionValue {
{ {"arg", true} },

Loading…
Cancel
Save