def extend(self, package): for key in dir(package): fn = getattr(package, key) if hasattr(fn, "primitive_name"): name = fn.primitive_name if hasattr(fn, "external"): fn = wrap_external(self, fn) self[name] = types.mkprimitive(name, fn)
def atom_reset(self, scope, args): fn = types.mkprimitive("reset!", lambda x1, x2: args[1]) return args[0].swap(self.rt, scope, fn)
def build_rt(filename): rt = RT() rt.__test_filename__ = filename rt.load(rt.ns, file(os.path.join(sys.path[0], "rt.loli"))) rt.ns.define("is", types.mkprimitive("is", lambda s, a: rt.eval(s, a[0]))) return rt