This commit is contained in:
aozhiwei 2023-03-03 22:05:15 +08:00
parent 8cf0d04a93
commit bb2f76674d
2 changed files with 7 additions and 3 deletions

View File

@ -29,9 +29,10 @@ namespace a8
value = symbol;
}
Value::Value(CProc cproc)
Value::Value(const std::string& proc_name, CProc cproc)
{
type = ValueType::kCProc;
name = proc_name;
value = cproc;
}
@ -67,6 +68,8 @@ namespace a8
case ValueType::kCProc:
{
auto obj = a8::MutableXObject::CreateObject();
obj->SetVal("type", "lambda");
obj->SetVal("name", name);
return *obj;
}
break;
@ -86,7 +89,7 @@ namespace a8
void Scope::RegisterCProc(const std::string& name, CProc proc)
{
vars_[name] = std::make_shared<Value>(proc);
vars_[name] = std::make_shared<Value>(name, proc);
}
GlobalScope::GlobalScope()

View File

@ -36,12 +36,13 @@ namespace a8
struct Value
{
ValueType type;
std::string name;
std::any value;
Value(Atom atom);
Value(List list);
Value(Symbol symbol);
Value(CProc cproc);
Value(const std::string& proc_name, CProc cproc);
bool IsType(ValueType t) { return t == type; };
a8::XObject ToXObject();
};