sequences.extras vocabulary
Factor handbook ยป Vocabulary index


Summary
Contains sequence operations that are not commonly needed. Most of these words are elaborations on functions already available in the main sequences vocabulary.

Metadata
Parents:sequences
Tags:sequences


Words

Error classes
ClassSuperclassSlots
Image slice-error-ofImage tuplefrom to seq
Image slices-don't-touchImage tupleslice1 slice2
Image underlying-mismatchImage tupleslice1 slice2


Tuple classes
ClassSuperclassSlots
Image evensImage wrapped-sequence
Image oddsImage wrapped-sequence
Image step-sliceImage tuplefrom to seq step
Image virtual-zip-indexImage tupleseq


Ordinary words
WordStack effect
Image (2selector-as)( quot length exemplar -- selector accum )
Image (collect-with-previous)( quot into -- quot' )
Image (each-integer-with-previous)( ... prev i n quot: ( ... i -- ... ) -- ... )
Image (start-all)( seq subseq increment -- indices )
Image 0accumulate( ... seq quot: ( ... prev elt -- ... next ) -- ... final newseq )
Image 0accumulate-as( ... seq quot: ( ... prev elt -- ... next ) exemplar -- ... newseq )
Image 0reduce( seq quot: ( ..a prev elt -- ..a next ) -- result )
Image 1reduce( seq quot: ( ..a prev elt -- ..a next ) -- result )
Image 2count( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... n )
Image 2each-index( ... seq1 seq2 quot: ( ... elt1 elt2 index -- ... ) -- ... )
Image 2filter( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) -- ... newseq )
Image 2filter-as( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) exemplar -- ... newseq )
Image 2filter-map( ... seq1 seq2 filter-quot: ( ... elt1 elt2 -- ... ? ) map-quot: ( elt1 elt2 -- obj ) -- ... newseq )
Image 2filter-map*( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... newseq )
Image 2filter-map-as( ... seq1 seq2 filter-quot: ( ... elt1 elt2 -- ... ? ) map-quot: ( elt1 elt2 -- obj ) exemplar -- ... newseq )
Image 2filter-map-as*( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... obj ? ) exemplar -- ... newseq )
Image 2map!( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) -- ... seq1 )
Image 2map-index( ... seq1 seq2 quot: ( ... elt1 elt2 index -- ... newelt ) -- ... newseq )
Image 2map-into( seq1 seq2 quot into -- )
Image 2map-sum( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... n ) -- ... n )
Image 2nested-each( seq1 seq2 quot -- )
Image 2nested-each*( seq1 seq-quot: ( n -- seq ) quot: ( a b -- ) -- )
Image 2nested-filter( seq1 seq2 quot -- seq )
Image 2nested-filter*( seq1 seq-quot quot -- seq )
Image 2nested-filter-as( seq1 seq2 quot exemplar -- seq )
Image 2nested-filter-as*( seq1 seq-quot quot exemplar -- seq )
Image 2nested-map( seq1 seq2 quot -- seq )
Image 2nested-map*( seq1 seq-quot quot -- seq )
Image 2nested-map-as( seq1 seq2 quot exemplar -- seq )
Image 2nested-map-as*( seq1 seq-quot quot exemplar -- seq )
Image 2none?( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... ? )
Image 2push-when( ..a elt1 elt2 quot: ( ..a elt1 elt2 -- ..b ? ) accum -- ..b )
Image 2reduce-from( ... seq1 seq2 identity quot: ( ... prev elt1 elt2 -- ... next ) i -- ... result )
Image 2reject( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) -- ... newseq )
Image 2reject-as( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) exemplar -- ... newseq )
Image 2reject-map( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) map-quot: ( elt1 elt2 -- obj ) -- ... newseq )
Image 2reject-map*( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... obj ? ) -- ... newseq )
Image 2reject-map-as( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) map-quot: ( elt1 elt2 -- obj ) exemplar -- ... newseq )
Image 2reject-map-as*( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... obj ? ) exemplar -- ... newseq )
Image 3each-from( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... ) i -- ... )
Image 3map-reduce( ..a seq1 seq2 seq3 map-quot: ( ..a elt1 elt2 elt3 -- ..b intermediate ) reduce-quot: ( ..b prev intermediate -- ..a next ) -- ..a result )
Image 3nested-each( seq1 seq2 seq3 quot -- )
Image 3nested-filter( seq1 seq2 seq3 quot -- seq )
Image 3nested-filter-as( seq1 seq2 seq3 quot exemplar -- seq )
Image 3nested-map( seq1 seq2 seq3 quot -- seq )
Image 3nested-map-as( seq1 seq2 seq3 quot exemplar -- seq )
Image <evens>( seq -- evens )
Image <odds>( seq -- odds )
Image <step-slice>( from/f to/f step seq -- step-slice )
Image <zip-index>( seq -- virtual-zip-index )
Image >resizable( seq -- accum )
Image >string-list( seq -- seq' )
Image ?<slice>( from/f to/f sequence -- slice )
Image ??nth( n seq -- elt/f ? )
Image ??nth-of( seq n -- elt/f ? )
Image ??prev( n seq -- obj/f ? )
Image ??prev-of( seq n -- obj/f ? )
Image ?cut( seq n -- before after )
Image ?first2( seq -- first/f second/f )
Image ?first3( seq -- first/f second/f third/f )
Image ?first4( seq -- first/f second/f third/f fourth/f )
Image ?heap-pop-value>array( heap -- array )
Image ?infimum( seq/f -- elt/f )
Image ?maximum( seq/f -- elt/f )
Image ?minimum( seq/f -- elt/f )
Image ?nth-of( seq n -- elt/f )
Image ?prev( n seq -- obj/f )
Image ?prev-of( seq n -- obj/f )
Image ?span-slices( slice1/f slice2/f -- slice )
Image ?supremum( seq/f -- elt/f )
Image ?trim( seq quot: ( elt -- ? ) -- seq/newseq )
Image ?trim-head( seq quot: ( elt -- ? ) -- seq/newseq )
Image ?trim-tail( seq quot: ( elt -- ? ) -- seq/newseq )
Image ?unclip( seq -- rest/f first/f )
Image accumulate-of( seq quot: ( prev elt -- next ) identity -- result )
Image adjacent-differences( seq -- seq' )
Image all-longest( seqs -- seqs' )
Image all-rotations( seq -- seq' )
Image all-same-eq?( seq quot: ( elt -- obj/f ) -- ? )
Image all-same?( seq quot: ( elt -- obj/f ) -- ? )
Image all-shortest( seqs -- seqs' )
Image all-subseqs( seq -- seqs )
Image appender( quot -- appender accum )
Image appender-for( quot exemplar -- appender accum )
Image arg-max( seq -- n )
Image arg-min( seq -- n )
Image arg-sort( seq -- indices )
Image arg-where( ... seq quot: ( ... elt -- ... ? ) -- ... indices )
Image assoc-zip-with( quot: ( key value -- calc ) -- alist )
Image at+*( n key assoc -- old new )
Image bqn-index( seq1 seq2 -- seq )
Image bqn-index-as( seq1 seq2 exemplar -- seq )
Image bqn-index-by( seq1 seq2 quot -- seq )
Image bqn-index-by-as( seq1 seq2 quot exemplar -- seq )
Image call-push-when( ..a elt quot: ( ..a elt -- ..b elt' ? ) accum -- ..b )
Image change-last( seq quot -- )
Image change-last-unsafe( seq quot -- )
Image change-nths( ... indices seq quot: ( ... elt -- ... elt' ) -- ... )
Image check-slice-of( seq from to -- seq from to )
Image classify( seq -- seq' )
Image classify*( seq -- next hash seq' )
Image classify-from( next hash seq -- next' hash seq' )
Image collapse( ... seq quot: ( ... elt -- ... ? ) elt -- ... seq' )
Image collect-with-previous( n quot into -- )
Image compact( ... seq quot: ( ... elt -- ... ? ) elt -- ... seq' )
Image count-head( seq quot -- n )
Image count-subseq( seq subseq -- n )
Image count-subseq*( seq subseq -- n )
Image count-tail( seq quot -- n )
Image count=( ... seq quot: ( ... elt -- ... ? ) n -- ... ? )
Image cut-when( ... seq quot: ( ... elt -- ... ? ) -- ... before after )
Image deduplicate( seq -- seq' )
Image deduplicate-last( seq -- seq' )
Image deep-nth( index-seq nested-seq -- elt )
Image deep-nth-of( nested-seq index-seq -- elt )
Image delete-slice-of( seq from to -- seq )
Image drop-while( ... seq quot: ( ... elt -- ... ? ) -- tail-slice )
Image each-index-from( ... seq quot: ( ... elt index -- ... ) i -- ... )
Image each-integer-with-previous( ... n quot: ( ... i -- ... ) -- ... )
Image each-prior( ... seq quot: ( ... prior elt -- ... ) -- ... )
Image each-prior-from( ... i seq quot: ( ... prior elt -- ... ) -- ... )
Image each-prior-identity-from( ... identity i seq quot: ( ... prior elt -- ... ) -- ... )
Image each-subseq( ... seq quot: ( ... subseq -- ... ) -- ... )
Image ensure-same-underlying( slice1 slice2 -- slice1 slice2 )
Image even-indices( seq -- seq' )
Image exchange-subseq( len pos1 pos2 seq -- )
Image extract!( ... seq quot: ( ... elt -- ... ? ) -- ... seq )
Image filter-all-subseqs( ... seq quot: ( ... subseq -- ... ? ) -- seq )
Image filter-all-subseqs-range( ... seq range quot: ( ... subseq -- ... ? ) -- seq )
Image filter-errors( ... seq quot: ( ... elt -- ... ? ) -- ... subseq )
Image filter-errors-as( ... seq quot: ( ... elt -- ... ? ) -- ... subseq )
Image filter-index( ... seq quot: ( ... elt i -- ... ? ) -- ... seq' )
Image filter-index-as( ... seq quot: ( ... elt i -- ... ? ) exemplar -- ... seq' )
Image filter-length( seq n -- seq' )
Image filter-map( ... seq filter-quot: ( ... elt -- ... ? ) map-quot: ( obj -- obj' ) -- ... newseq )
Image filter-map*( ... seq quot: ( ... elt -- ... newelt ? ) -- ... newseq )
Image filter-map-as( ... seq filter-quot: ( ..a elt -- ..b ? ) map-quot: ( obj -- obj' ) exemplar -- ... newseq )
Image filter-map-as*( ... seq quot: ( ..a elt -- ..b obj ? ) exemplar -- ... newseq )
Image find*( ... seq quot: ( ... elt -- ... ? ) -- ... elt i/f )
Image find-all( ... seq quot: ( ... elt -- ... ? ) -- ... elts )
Image find-deep( ... seq quot: ( ... elt -- ... calc ) -- ... calc/f )
Image find-from*( ... n seq quot: ( ... elt -- ... ? ) -- ... elt i/f )
Image find-index*( ... seq quot: ( ... elt i -- ... ? ) -- ... elt i/f )
Image find-index-from*( ... n seq quot: ( ... elt i -- ... ? ) -- ... elt i/f )
Image find-last*( ... seq quot: ( ... elt -- ... ? ) -- ... elt i/f )
Image find-last-from*( ... n seq quot: ( ... elt -- ... ? ) -- ... elt i/f )
Image find-last-index( ... seq quot: ( ... elt i -- ... ? ) -- ... i elt )
Image find-last-index-from( ... n seq quot: ( ... elt i -- ... ? ) -- ... i elt )
Image find-nth( nth seq quot: ( obj -- ? ) -- i/f obj/f )
Image find-nth-from( nth from seq quot: ( obj -- ? ) -- i/f obj/f )
Image find-nth-last( nth seq quot: ( obj -- ? ) -- i/f obj/f )
Image find-nth-last-from( nth from seq quot: ( obj -- ? ) -- i/f obj/f )
Image find-pred( ... seq quot: ( ... elt -- ... calc ) pred: ( ... calc -- ... ? ) -- ... calc/f i/f elt/f )
Image find-pred-loop( ... i n seq quot: ( ... elt -- ... calc ? ) -- ... calc/f i/f elt/f )
Image first=( seq elt -- ? )
Image first?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image fourth=( seq elt -- ? )
Image fourth?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image fry-map-as( seq quot exemplar -- newseq )
Image harvest!( seq -- newseq )
Image harvest-as( seq exemplar -- newseq )
Image head*-as( seq n exemplar -- seq' )
Image head-as( seq n exemplar -- seq' )
Image heap>pairs( heap -- pairs )
Image inc-at*( key assoc -- old new )
Image index*( seq obj -- n )
Image index-from*( i seq obj -- n )
Image index-selector( quot -- selector accum )
Image index-selector-as( quot exemplar -- selector accum )
Image indices*( seq obj -- indices )
Image infimum-by*( ... seq quot: ( ... elt -- ... x ) -- ... i elt )
Image insert-nth!( elt n seq -- )
Image interleaved( seq glue -- newseq )
Image interleaved-as( seq glue exemplar -- newseq )
Image iterate-heap-while( heap quot1: ( value key -- slurp? ) quot2: ( value key -- obj/f ) -- obj/f loop? )
Image last-index*( seq obj -- n )
Image last-index-from*( i seq obj -- n )
Image last=( seq elt -- ? )
Image last?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image longest-subseq( seq1 seq2 -- subseq )
Image loop>array( ... quot: ( ... -- ... obj/f ) -- ... array )
Image loop>array*( ... quot: ( ... -- ... obj ? ) -- ... array )
Image loop>array**( ... quot: ( ... -- ... obj ? ) -- ... array )
Image loop>sequence( ... quot: ( ... -- ... obj/f ) exemplar -- ... seq )
Image loop>sequence*( ... quot: ( ... -- ... obj ? ) exemplar -- ... seq )
Image loop>sequence**( ... quot: ( ... -- ... obj ? ) exemplar -- ... seq )
Image map-concat( ... seq quot: ( ... elt -- ... newelt ) -- ... newseq )
Image map-concat-as( ... seq quot: ( ... elt -- ... newelt ) exemplar -- ... newseq )
Image map-filter( ... seq map-quot: ( ... elt -- ... newelt ) filter-quot: ( ... newelt -- ... ? ) -- ... subseq )
Image map-filter-as( ... seq map-quot: ( ... elt -- ... newelt ) filter-quot: ( ... newelt -- ... ? ) exemplar -- ... subseq )
Image map-find-index( ... seq quot: ( ... elt index -- ... result/f ) -- ... result i elt )
Image map-find-last-index( ... seq quot: ( ... elt index -- ... result/f ) -- ... result i elt )
Image map-from( ... seq quot: ( ... elt -- ... newelt ) from -- ... newseq )
Image map-from-as( ... seq quot: ( ... elt -- ... newelt ) from exemplar -- ... newseq )
Image map-harvest( ... seq quot: ( ... elt -- ... newelt ) -- ... newseq )
Image map-if( ... seq if-quot: ( ... elt -- ... ? ) map-quot: ( ... elt -- ... newelt ) -- ... newseq )
Image map-index!( ... seq quot: ( ... elt index -- ... newelt ) -- ... seq )
Image map-infimum( seq quot: ( ... elt -- ... elt' ) -- elt' )
Image map-integers-with( ... len quot: ( ... prev i -- ... elt ) exemplar -- ... newseq )
Image map-like( seq exemplar -- seq' )
Image map-maximum( seq quot: ( ... elt -- ... elt' ) -- elt' )
Image map-minimum( seq quot: ( ... elt -- ... elt' ) -- elt' )
Image map-prior( ... seq quot: ( ... prior elt -- elt' ) -- seq' )
Image map-prior-as( ... seq quot: ( ... prior elt -- elt' ) exemplar -- seq' )
Image map-prior-from( ... i seq quot: ( ... prior elt -- elt' ) -- seq' )
Image map-prior-from-as( ... i seq quot: ( ... prior elt -- elt' ) exemplar -- seq' )
Image map-prior-identity-as( ... identity seq quot: ( ... prior elt -- elt' ) exemplar -- seq' )
Image map-prior-identity-from-as( ... identity i seq quot: ( ... prior elt -- elt' ) exemplar -- seq' )
Image map-product( ... seq quot: ( ... elt -- ... n ) -- ... n )
Image map-sift( ... seq quot: ( ... elt -- ... newelt ) -- ... newseq )
Image map-supremum( seq quot: ( ... elt -- ... elt' ) -- elt' )
Image map-with-previous( ... seq quot: ( ... elt prev/f -- ... newelt ) -- ... newseq )
Image map-with-previous-as( ... seq quot: ( ... elt prev/f -- ... newelt ) exemplar -- ... newseq )
Image map-zip-swap( quot: ( x -- y ) -- alist )
Image mark-firsts( seq -- seq' )
Image max-subarray-sum( seq -- sum )
Image maximum-by*( ... seq quot: ( ... elt -- ... x ) -- ... i elt )
Image maybe-push( elt/f accum -- )
Image member-eq-of?( seq elt -- ? )
Image member-of?( seq elt -- ? )
Image merge-slices( slice1 slice2 -- slice/* )
Image minimum-by*( ... seq quot: ( ... elt -- ... x ) -- ... i elt )
Image mismatch-last( seq1 seq2 -- i-back )
Image nth*( n seq -- elt )
Image nth-index( n obj seq -- i )
Image nth-of( seq n -- elt )
Image nth=( n seq elt -- ? )
Image nth?( ... n seq quot: ( ... elt -- ... ? ) -- ... ? )
Image occurrence-count-by( seq quot: ( elt -- elt' ) -- hash seq' )
Image odd-indices( seq -- seq' )
Image one?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image ordered-slices-overlap?( slice-lt slice-gt -- ? )
Image ordered-slices-range( slice-lt slice-gt -- to from )
Image ordered-slices-touch?( slice-lt slice-gt -- ? )
Image pad-center( seq n elt -- padded )
Image pad-longest( seq1 seq2 elt -- seq1 seq2 )
Image partial-sums( seq -- seq' )
Image percent-of( ... seq quot: ( ... elt -- ... ? ) -- ... % )
Image prepend-lines-with-spaces( str -- str' )
Image prev( n seq -- obj )
Image prev-identity( i seq -- identity i seq )
Image prev-of( seq n -- obj )
Image progressive-index( seq1 seq2 -- hash seq )
Image progressive-index-as( seq1 seq2 exemplar -- hash seq )
Image progressive-index-by( seq1 seq2 quot -- hash seq )
Image progressive-index-by-as( seq1 seq2 quot exemplar -- hash seq )
Image push-if*( ..a elt quot: ( ..a elt -- ..b obj/f ) accum -- ..b )
Image push-if-index( ..a elt i quot: ( ..a elt i -- ..b ? ) accum -- ..b )
Image reduce-from( ... seq identity quot: ( ... prev elt -- ... next ) from -- ... result )
Image reduce-of( seq quot: ( prev elt -- next ) identity -- result )
Image reject-errors( ... seq quot: ( ... elt -- ... ? ) -- ... subseq )
Image reject-errors-as( ... seq quot: ( ... elt -- ... ? ) -- ... subseq )
Image reject-map( ... seq filter-quot: ( ... elt -- ... ? ) map-quot: ( obj -- obj' ) -- ... newseq )
Image reject-map*( ... seq quot: ( ... elt -- ... newelt ? ) -- ... newseq )
Image reject-map-as( ... seq filter-quot: ( ... elt -- ... ? ) map-quot: ( obj -- obj' ) exemplar -- ... newseq )
Image reject-map-as*( ... seq quot: ( ... elt -- ... newelt ? ) exemplar -- ... newseq )
Image remove-eq-of( seq elt -- newseq )
Image remove-first( obj seq -- seq' )
Image remove-first!( obj seq -- seq )
Image remove-first-of( seq obj -- seq' )
Image remove-last( obj seq -- seq' )
Image remove-last!( obj seq -- seq )
Image remove-nth-of( seq n -- seq' )
Image remove-nth-of!( seq n -- seq )
Image remove-nth-of*( seq n -- nth seq' )
Image remove-nth-of*!( seq n -- nth seq )
Image remove-of( seq elt -- newseq )
Image replicate-into( ... seq quot: ( ... -- ... newelt ) -- ... )
Image reverse-as( seq exemplar -- newseq )
Image rotate( seq n -- seq' )
Image rotate!( seq n -- )
Image round-robin( seq -- newseq )
Image safe-subseq( from to seq -- subseq )
Image second=( seq elt -- ? )
Image second?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image selector*( quot -- selector accum )
Image selector-as*( quot exemplar -- selector accum )
Image sequence-cartesian-product( seqs -- seqs' )
Image sequence-index-operator-last( n seq quot -- n quot' )
Image sequence>slice( sequence -- slice )
Image set-nth-of( seq n elt -- seq )
Image set-nths( value indices seq -- )
Image set-nths-unsafe( value indices seq -- )
Image setup-each-from( seq quot -- n quot )
Image shorten*( vector n -- seq )
Image sift!( seq -- seq' )
Image sift-as( seq exemplar -- newseq )
Image slice-error-of( from to seq -- * )
Image slice-order-by-from( slice1 slice2 -- slice-lt slice-gt )
Image slice-when( seq quot: ( elt -- ? ) -- seq' )
Image slices-don't-touch( slice1 slice2 -- * )
Image slices-overlap?( slice1 slice2 -- ? )
Image slices-touch?( slice1 slice2 -- ? )
Image slurp-heap-while-map( heap quot1: ( value key -- slurp? ) quot2: ( value key -- obj/f ) -- seq )
Image snip-of( seq from to -- head tail )
Image snip-slice-of( seq from to -- head tail )
Image span-slices( slice1 slice2 -- slice )
Image start-all( seq subseq -- indices )
Image start-all*( seq subseq -- indices )
Image subseq*( from to seq -- subseq )
Image subseq-indices( seq subseq -- indices )
Image supremum-by*( ... seq quot: ( ... elt -- ... x ) -- ... i elt )
Image tail*-as( seq n exemplar -- seq' )
Image tail-as( seq n exemplar -- seq' )
Image take-while( ... seq quot: ( ... elt -- ... ? ) -- head-slice )
Image third=( seq elt -- ? )
Image third?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image throws?( quot -- ? )
Image trim-as( ... seq quot: ( ... elt -- ... ? ) exemplar -- ... newseq )
Image underlying-mismatch( slice1 slice2 -- * )
Image unordered-slices-overlap?( slice1 slice2 -- ? )
Image unordered-slices-range( slice1 slice2 -- to from )
Image unordered-slices-touch?( slice1 slice2 -- ? )
Image unsurround( newseq seq2 seq3 -- seq1 )
Image until-empty( seq quot -- )
Image with-string-lines( str quot -- str' )
Image zero-loop>array( quot: ( ..a n -- ..a obj ) -- seq )
Image zero-loop>sequence( ... quot: ( ... n -- ... obj/f ) exemplar -- ... seq )
Image zip-longest( seq1 seq2 -- assoc )
Image zip-longest-with( seq1 seq2 fill -- assoc )


Class predicate words
WordStack effect
Image evens?( object -- ? )
Image odds?( object -- ? )
Image slice-error-of?( object -- ? )
Image slices-don't-touch?( object -- ? )
Image step-slice?( object -- ? )
Image underlying-mismatch?( object -- ? )
Image virtual-zip-index?( object -- ? )


Files


Metadata files