def cont(self, exp, cont): if isinstance(exp, tuple): #isinstance(exp, list) or if is_subclass(exp[0], object): # SpecialForm form = exp[0](*exp[1:]) return form.cont(cont, self) else: @mycont(cont) def evaluate_cont(op, solver): return op.evaluate_cont(solver, cont, exp[1:]) return self.cont(exp[0], evaluate_cont) else: if is_subclass(exp, object): return value_cont(exp, cont) try: exp_cont = exp.cont except: return value_cont(exp, cont) return exp_cont(cont, self)
def collocet_builtins(): for name, obj in globals().items(): if isinstance(obj, Command) or is_subclass(obj, SpecialForm): try: symbol = obj.symbol except AttributeError: try: symbol = obj.name except AttributeError: symbol = name _builtins[symbol] = obj
def collocet_builtins(globls, global_env, module): for name, obj in globls.items(): if isinstance(obj, Command) or is_subclass(obj, SpecialForm): v = get_var(obj, name) module[v] = obj if obj.is_global: global_env[v] = obj