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


! Defaults for some methods.
! Override them for efficiency

M: set null? members null? ; inline


: without ( seq set -- subseq )
    tester [ not ] compose filter ;

: adjoin-all ( seq set -- )
    [ adjoin ] curry each ;

