def read_map(rdr): cnt = read_raw_integer(rdr) acc = EMPTY_MAP for x in range(cnt): acc = rt._assoc(acc, read_obj(rdr), read_obj(rdr)) return acc
def invoke(self, rdr, ch): acc = EMPTY_MAP while True: eat_whitespace(rdr) ch = rdr.read() if ch == u"}": return acc rdr.unread(ch) k = read(rdr, True) v = read(rdr, False) acc = rt._assoc(acc, k, v) return acc
def invoke(self, rdr, ch): acc = EMPTY_MAP while True: try: eat_whitespace(rdr) except EOFError: throw_syntax_error_with_data(rdr, u"Unmatched map open '{'") ch = rdr.read() if ch == u"}": return acc rdr.unread() itm = read_inner(rdr, True, always_return_form=False) if itm != rdr: k = itm itm = rdr while itm == rdr: itm = read_inner(rdr, False, always_return_form=False) v = itm acc = rt._assoc(acc, k, v) return acc
def merge_fn(acc, x): return rt._assoc(acc, rt._key(x), rt._val(x))
def set_var_value(self, var, val): cur_frame = self.current_frame() self.pop_binding_frame() self._vars = rt.cons(rt._assoc(cur_frame, var, val), self._vars)