 : without ( seq set -- subseq )
     tester [ not ] compose filter ;
 
-: ?adjoin ( elt set -- ? )
-    2dup in? [ 2drop f ] [ adjoin t ] if ; inline
-
 : adjoin-all ( seq set -- )
     [ adjoin ] curry each ;
 

! Set protocol
MIXIN: set
GENERIC: adjoin ( elt set -- )
GENERIC: in? ( elt set -- ? )
GENERIC: delete ( elt set -- )
GENERIC: set-like ( set exemplar -- set' )

<PRIVATE

: (pruned) ( elt set accum -- )
    2over ?adjoin [ nip push ] [ 3drop ] if ; inline

: pruned ( seq -- newseq )
    [ f fast-set ] [ length <vector> ] bi
