diff --git a/core/sets/sets.factor b/core/sets/sets.factor index 0d36241b1c..cca6239955 100644 --- a/core/sets/sets.factor +++ b/core/sets/sets.factor @@ -7,6 +7,7 @@ IN: sets ! 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' ) @@ -35,6 +36,8 @@ M: f clear-set drop ; inline ! Defaults for some methods. ! Override them for efficiency +M: set ?adjoin 2dup in? [ 2drop f ] [ adjoin t ] if ; + M: set null? members null? ; inline M: set cardinality members length ; @@ -100,9 +103,7 @@ M: set all-unique? drop t ; ] bi @@ -157,9 +158,6 @@ M: sequence clear-set : 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 ;