def __getitem__(self, key): key = strict(key.__index__()) if key < 0: key = len(self) + key if key == 0: return self._car else: return self._cdr[key - 1]
def __getitem__(self, key): if isinstance(key, slice): return _from_iter( islice(iter(self), key.start, key.stop, key.step), ) key = strict(index(key)) if key < 0: key = len(self) + key if key == 0: return self.car else: return self.cdr[key - 1]
def __strict__(self): try: return self._strict except AttributeError: self._strict = ns = (strict(self.car), ) + strict(self.cdr) return ns
def __eq__(self, other): return strict(self) == strict(other)
def __str__(self): return str(strict(self))
def __repr__(self): return repr(strict(self))
def __len__(self): return len(strict(self))
def _normal_form(self): ns = (self._car,) + strict(self._cdr) self._normal_form = lambda: ns return ns
def __strict__(self): try: return self._strict except AttributeError: self._strict = ns = (strict(self.car),) + strict(self.cdr) return ns
def _normal_form(self): ns = (self._car, ) + strict(self._cdr) self._normal_form = lambda: ns return ns