let split (f : '-> bool) (s : 'e hashset) : ('e list * 'e list) =
    fold (fun x (yes, no) -> if f x then (x::yes, no) else (yes, x::no)
         ) s ([], [])