def eval(self, env): new_env = Env(env) # put object in heap addr = heap.alloc() heap[addr] = self for decl in self.decls: decl.exp.set_this(addr) decl.eval(new_env) for key in new_env: if new_env.directly_defined(key): self.env[key] = new_env[key] return addr
def call(self, args, env): return heap.alloc()