def _compare(self, frm, to): if isinstance(to, tuple): assert isinstance(frm, Cons) for x in to: self._compare(frm.first(), x) frm = frm.next() assert frm == nil elif isinstance(to, int): assert isinstance(frm, Integer) assert frm._int_val == to elif isinstance(to, Symbol): assert isinstance(frm, Symbol) assert frm._str == to._str elif isinstance(to, list): assert isinstance(frm, PersistentVector) for x in range(max(len(to), rt._count(frm)._int_val)): self._compare(rt.nth(frm, rt.wrap(x)), to[x]) elif isinstance(to, dict): assert isinstance(frm, PersistentHashMap) for key in dict.keys(to): self._compare(frm.val_at(rt.wrap(key), ""), to[key]) assert rt._count(frm)._int_val == len(dict.keys(to)) elif isinstance(to, Character): assert isinstance(frm, Character) assert to._char_val == frm._char_val else: raise Exception("Don't know how to handle " + str(type(to)))
def substring2(a, start): return substring3(a, start, rt._count(a))
def _count(self): assert isinstance(self, PersistentHashSet) return rt._count(self._map)