{--------------------------------------------------------------------
  Filter and partition
--------------------------------------------------------------------}
-- | /O(n)/. Filter all elements that satisfy the predicate.
filter :: (a -> Bool) -> Set a -> Set a
filter _ Tip = Tip
filter :: (a -> Bool) -> Set a -> Set a
filter _ Tip = Tip
filter _ Tip = Tip