     [ intersect ] keep = ;
 
 M: bit-set members
-    [ table>> length iota ] keep [ in? ] curry filter ;
+    table>> [ length iota ] keep '[ _ nth-unsafe ] filter ;
 
 <PRIVATE
 

    dup bit-set? [ check-bit-set-failed ] unless ; inline

: bit-set-map ( seq1 seq2 quot -- seq )
    [ 2drop length>> ]
    [
        [
            [ [ length ] bi@ assert= ]
            [ [ underlying>> ] bi@ ] 2bi
        ] dip 2map
    ] 3bi bit-array boa ; inline

: (bit-set-op) ( set1 set2 -- table1 table2 )
    [ set-like ] keep [ table>> ] bi@ ; inline

M: bit-set delete
    ! This isn't allowed to throw an error if the elt wasn't
    ! in the set
    over integer? [ [ f ] 2dip table>> ?set-nth ] [ 2drop ] if ;

! If you do binary set operations with a bit-set, it's expected
! that the other thing can also be represented as a bit-set
