M: hash-set adjoin table>> dupd set-at ; inline
M: hash-set delete table>> delete-at ; inline
M: hash-set members table>> keys ; inline
-M: hash-set set-like
- drop dup hash-set? [ members <hash-set> ] unless ;
-M: hash-set clone
- table>> clone hash-set boa ;
+M: hash-set set-like drop dup hash-set? [ members <hash-set> ] unless ;
+M: hash-set clone table>> clone hash-set boa ;
M: sequence fast-set <hash-set> ;
M: f fast-set drop H{ } clone hash-set boa ;
M: sequence duplicates
f fast-set [ [ in? ] [ adjoin ] 2bi ] curry filter ;
+
+<PRIVATE
+
+: (all-unique?) ( elt hash -- ? )
+ 2dup in? [ 2drop f ] [ adjoin t ] if ; inline
+
+PRIVATE>
+
+M: sequence all-unique?
+ dup length <hashtable> hash-set boa
+ [ (all-unique?) ] curry all? ;