def filter(self, pred: Callable[[Node], bool]) -> Node: def filt(n: Node) -> bool: return ( pred(n) if isinstance(n, LeafNode) else not n.empty ) return self.replace(self.data.valmap(__.filter(pred)).valfilter(filt))
def filter(self, fa: LazyList[A], f: Callable[[A], bool]) -> LazyList[A]: return fa.copy(lambda l: filter(f, l), __.filter(f))