[ array>> length>> 1 fixnum-shift-fast ] bi fixnum> ; inline
: each-member ( array quot: ( elt -- ) -- )
- [
- [ length ] keep
- [ array-nth dup tombstone? [ drop ] ] curry
- ] dip [ if ] curry compose each-integer ; inline
+ [ if ] curry [ dup tombstone? [ drop ] ] prepose each ; inline
: grow-hash ( hash -- )
{ hash-set } declare [
INSTANCE: hash-set set
-M: hash-set intersect
- small/large sequence/tester filter >hash-set ;
+! Overrides for performance
+
+M: hash-set intersect (intersect) >hash-set ;
M: hash-set union
over hash-set? [
(union) >hash-set
] if ;
-M: hash-set diff
- sequence/tester [ not ] compose filter >hash-set ;
+M: hash-set diff (diff) >hash-set ;
+
+! Default methods
M: f fast-set drop 0 <hash-set> ;