: deep-filter ( ... obj quot: ( ... elt -- ... ? ) -- ... seq )
over dup branch? [ drop f ] unless deep-filter-as ; inline
+: deep-reject-as ( ... obj quot: ( ... elt -- ... ? ) exemplar -- ... seq )
+ [ [ not ] compose ] dip deep-filter-as ; inline
+
+: deep-reject ( ... obj quot: ( ... elt -- ... ? ) -- ... seq )
+ [ not ] compose deep-filter ; inline
+
: (deep-find) ( ... obj quot: ( ... elt -- ... ? ) -- ... elt ? )
[ call ] 2keep rot [ drop t ] [
over branch? [
] [ drop ] if ; inline recursive
: flatten ( obj -- seq )
- [ branch? not ] deep-filter ;
+ [ branch? ] deep-reject ;
: flatten-as ( obj exemplar -- seq )
- [ branch? not ] swap deep-filter-as ;
+ [ branch? ] swap deep-reject-as ;