sequences vocabulary
Factor handbook » Vocabulary index


Documentation
Sequence operations

Metadata
Tags:collections, sequences
Authors:Slava Pestov


Words

Error classes
ClassSuperclassSlots
Image assert-sequenceImage tuplegot expected
Image bounds-errorImage tupleindex seq
Image immutableImage tupleelement index sequence
Image slice-errorImage tuplefrom to seq


Tuple classes
ClassSuperclassSlots
Image iotaImage tuplen
Image repetitionImage tuplelength elt
Image reversedImage wrapped-sequence
Image sliceImage tuplefrom to seq
Image wrapped-sequenceImage tupleseq


Mixin classes
Image immutable-sequence
Image sequence
Image virtual-sequence


Generic words
WordStack effect
Image bounds-check?( n seq -- ? )
Image clone-like( seq exemplar -- newseq )
Image length( seq -- n )
Image lengthen( n seq -- )
Image like( seq exemplar -- newseq )
Image maximum( seq -- elt )
Image minimum( seq -- elt )
Image new-resizable( len seq -- newseq )
Image new-sequence( len seq -- newseq )
Image nth( n seq -- elt )
Image set-length( n seq -- )
Image set-nth( elt n seq -- )
Image shorten( n seq -- )
Image sum( seq -- n )
Image sum-lengths( seq -- n )
Image virtual-exemplar( seq -- seq' )
Image virtual@( n seq -- n' seq' )


Ordinary words
WordStack effect
Image 1sequence( obj exemplar -- seq )
Image 1surround( seq1 seq2 -- newseq )
Image 1surround-as( seq1 seq2 exemplar -- newseq )
Image 2all?( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... ? )
Image 2any?( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... ? )
Image 2each( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ) -- ... )
Image 2each-from( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ) from -- ... )
Image 2length( seq1 seq2 -- n1 n2 )
Image 2map( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) -- ... newseq )
Image 2map-as( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) exemplar -- ... newseq )
Image 2map-reduce( ..a seq1 seq2 map-quot: ( ..a elt1 elt2 -- ..a intermediate ) reduce-quot: ( ..a prev intermediate -- ..a next ) -- ..a result )
Image 2reduce( ... seq1 seq2 identity quot: ( ... prev elt1 elt2 -- ... next ) -- ... result )
Image 2selector( quot -- selector accum1 accum2 )
Image 2sequence( obj1 obj2 exemplar -- seq )
Image 3append( seq1 seq2 seq3 -- newseq )
Image 3append-as( seq1 seq2 seq3 exemplar -- newseq )
Image 3each( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... ) -- ... )
Image 3length( seq1 seq2 seq3 -- n1 n2 n3 )
Image 3map( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... newelt ) -- ... newseq )
Image 3map-as( ... seq1 seq2 seq3 quot: ( ... elt1 elt2 elt3 -- ... newelt ) exemplar -- ... newseq )
Image 3sequence( obj1 obj2 obj3 exemplar -- seq )
Image 4sequence( obj1 obj2 obj3 obj4 exemplar -- seq )
Image <iota>( n -- iota )
Image <repetition>( len elt -- repetition )
Image <reversed>( seq -- reversed )
Image <slice>( from to seq -- slice )
Image >slice<( slice -- from to seq )
Image ?first( seq -- elt/f )
Image ?last( seq -- elt/f )
Image ?nth( n seq -- elt/f )
Image ?second( seq -- elt/f )
Image ?set-nth( elt n seq -- )
Image accumulate( ... seq identity quot: ( ... prev elt -- ... next ) -- ... final newseq )
Image accumulate!( ... seq identity quot: ( ... prev elt -- ... next ) -- ... final seq )
Image accumulate*( ... seq identity quot: ( ... prev elt -- ... next ) -- ... newseq )
Image accumulate*!( ... seq identity quot: ( ... prev elt -- ... next ) -- ... seq )
Image accumulate*-as( ... seq identity quot: ( ... prev elt -- ... next ) exemplar -- ... newseq )
Image accumulate-as( ... seq identity quot: ( ... prev elt -- ... next ) exemplar -- ... final newseq )
Image all?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image any?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image append( seq1 seq2 -- newseq )
Image append!( seq1 seq2 -- seq1 )
Image append-as( seq1 seq2 exemplar -- newseq )
Image assert-sequence( got expected -- * )
Image assert-sequence=( a b -- )
Image binary-reduce( seq start quot: ( elt1 elt2 -- newelt ) -- value )
Image bounds-check( n seq -- n seq )
Image bounds-error( index seq -- * )
Image but-last( seq -- headseq )
Image but-last-slice( seq -- slice )
Image cartesian-each( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ) -- ... )
Image cartesian-find( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... ? ) -- ... elt1 elt2 )
Image cartesian-map( ... seq1 seq2 quot: ( ... elt1 elt2 -- ... newelt ) -- ... newseq )
Image cartesian-product( seq1 seq2 -- newseq )
Image cartesian-product-as( seq1 seq2 exemplar -- newseq )
Image change-nth( ..a i seq quot: ( ..a elt -- ..b newelt ) -- ..b )
Image check-slice( from to seq -- from to seq )
Image collapse-slice( m n slice -- m' n' seq )
Image collector( quot -- quot' vec )
Image collector-as( quot exemplar -- quot' vec )
Image concat( seq -- newseq )
Image concat-as( seq exemplar -- newseq )
Image copy( src i dst -- )
Image count( ... seq quot: ( ... elt -- ... ? ) -- ... n )
Image cut( seq n -- before after )
Image cut*( seq n -- before after )
Image cut-slice( seq n -- before-slice after-slice )
Image cut-slice*( seq n -- before-slice after-slice )
Image delete-all( seq -- )
Image delete-slice( from to seq -- )
Image drop-prefix( seq1 seq2 -- slice1 slice2 )
Image each( ... seq quot: ( ... x -- ... ) -- ... )
Image each-from( ... seq quot: ( ... x -- ... ) i -- ... )
Image each-index( ... seq quot: ( ... elt index -- ... ) -- ... )
Image empty?( seq -- ? )
Image exchange( m n seq -- )
Image filter( ... seq quot: ( ... elt -- ... ? ) -- ... subseq )
Image filter!( ... seq quot: ( ... elt -- ... ? ) -- ... seq )
Image filter-as( ... seq quot: ( ... elt -- ... ? ) exemplar -- ... subseq )
Image find( ... seq quot: ( ... elt -- ... ? ) -- ... i elt )
Image find-from( ... n seq quot: ( ... elt -- ... ? ) -- ... i elt )
Image find-index( ... seq quot: ( ... elt i -- ... ? ) -- ... i elt )
Image find-index-from( ... n seq quot: ( ... elt i -- ... ? ) -- ... i elt )
Image find-last( ... seq quot: ( ... elt -- ... ? ) -- ... i elt )
Image find-last-from( ... n seq quot: ( ... elt -- ... ? ) -- ... i elt )
Image first( seq -- first )
Image first2( seq -- first second )
Image first3( seq -- first second third )
Image first4( seq -- first second third fourth )
Image flip( matrix -- newmatrix )
Image follow( ... obj quot: ( ... prev -- ... result/f ) -- ... seq )
Image fourth( seq -- fourth )
Image from-tail( seq n -- seq n' )
Image glue( seq1 seq2 seq3 -- newseq )
Image glue-as( seq1 seq2 seq3 exemplar -- newseq )
Image halves( seq -- first-slice second-slice )
Image harvest( seq -- newseq )
Image head( seq n -- headseq )
Image head*( seq n -- headseq )
Image head-slice( seq n -- slice )
Image head-slice*( seq n -- slice )
Image head?( seq begin -- ? )
Image if-empty( ..a seq quot1: ( ..a -- ..b ) quot2: ( ..a seq -- ..b ) -- ..b )
Image immutable( element index sequence -- * )
Image index( obj seq -- n )
Image index-from( obj i seq -- n )
Image index-of-last( seq -- n seq )
Image index-or-length( seq n -- seq n' )
Image indices( obj seq -- indices )
Image infimum( seq -- elt )
Image infimum-by( ... seq quot: ( ... elt -- ... x ) -- ... elt )
Image insert-nth( elt n seq -- seq' )
Image interleave( ... seq between quot: ( ... elt -- ... ) -- ... )
Image join( seq glue -- newseq )
Image join-as( seq glue exemplar -- newseq )
Image last( seq -- elt )
Image last-index( obj seq -- n )
Image last-index-from( obj i seq -- n )
Image last2( seq -- penultimate ultimate )
Image lengthd( seq obj -- n obj )
Image longer( seq1 seq2 -- seq )
Image longer?( seq1 seq2 -- ? )
Image longest( seqs -- elt )
Image map( ... seq quot: ( ... elt -- ... newelt ) -- ... newseq )
Image map!( ... seq quot: ( ... elt -- ... newelt ) -- ... seq )
Image map-as( ... seq quot: ( ... elt -- ... newelt ) exemplar -- ... newseq )
Image map-find( ... seq quot: ( ... elt -- ... result/f ) -- ... result elt )
Image map-find-last( ... seq quot: ( ... elt -- ... result/f ) -- ... result elt )
Image map-index( ... seq quot: ( ... elt index -- ... newelt ) -- ... newseq )
Image map-index-as( ... seq quot: ( ... elt index -- ... newelt ) exemplar -- ... newseq )
Image map-integers( ... len quot: ( ... i -- ... elt ) -- ... newseq )
Image map-integers-as( ... len quot: ( ... i -- ... elt ) exemplar -- ... newseq )
Image map-integers-from-as( ... from len quot: ( ... i -- ... elt ) exemplar -- ... newseq )
Image map-reduce( ..a seq map-quot: ( ..a elt -- ..a intermediate ) reduce-quot: ( ..a prev intermediate -- ..a next ) -- ..a result )
Image map-sum( ... seq quot: ( ... elt -- ... n ) -- ... n )
Image max-length( seq1 seq2 -- n )
Image maximum-by( ... seq quot: ( ... elt -- ... x ) -- ... elt )
Image member-eq?( elt seq -- ? )
Image member?( elt seq -- ? )
Image midpoint( seq -- n )
Image min-length( seq1 seq2 -- n )
Image minimum-by( ... seq quot: ( ... elt -- ... x ) -- ... elt )
Image mismatch( seq1 seq2 -- i )
Image move( to from seq -- )
Image new-like( len exemplar quot -- seq )
Image new-resizable-like( len-exemplar type-exemplar -- newseq )
Image new-sequence-like( len-exemplar type-exemplar -- newseq )
Image none?( ... seq quot: ( ... elt -- ... ? ) -- ... ? )
Image nths( indices seq -- seq' )
Image nths-of( seq indices -- seq' )
Image pad-head( seq n elt -- padded )
Image pad-tail( seq n elt -- padded )
Image partition( ... seq quot: ( ... elt -- ... ? ) -- ... trueseq falseseq )
Image pop( seq -- elt )
Image pop*( seq -- )
Image prefix( seq elt -- newseq )
Image prepend( seq1 seq2 -- newseq )
Image prepend-as( seq1 seq2 exemplar -- newseq )
Image produce( ..a pred: ( ..a -- ..b ? ) quot: ( ..b -- ..a obj ) -- ..b seq )
Image produce-as( ..a pred: ( ..a -- ..b ? ) quot: ( ..b -- ..a obj ) exemplar -- ..b seq )
Image product( seq -- n )
Image push( elt seq -- )
Image push-all( src dst -- )
Image push-either( ..a elt quot: ( ..a elt -- ..b ? ) accum1 accum2 -- ..b )
Image push-when( ..a elt quot: ( ..a elt -- ..b ? ) accum -- ..b )
Image reduce( ... seq identity quot: ( ... prev elt -- ... next ) -- ... result )
Image reduce-index( ... seq identity quot: ( ... prev elt index -- ... next ) -- ... result )
Image reject( ... seq quot: ( ... elt -- ... ? ) -- ... subseq )
Image reject!( ... seq quot: ( ... elt -- ... ? ) -- ... seq )
Image reject-as( ... seq quot: ( ... elt -- ... ? ) exemplar -- ... subseq )
Image remove( elt seq -- newseq )
Image remove!( elt seq -- seq )
Image remove-eq( elt seq -- newseq )
Image remove-eq!( elt seq -- seq )
Image remove-nth( n seq -- seq' )
Image remove-nth!( n seq -- seq )
Image replace-slice( new from to seq -- seq' )
Image replicate( ... len quot: ( ... -- ... newelt ) -- ... newseq )
Image replicate-as( ... len quot: ( ... -- ... newelt ) exemplar -- ... newseq )
Image rest( seq -- tailseq )
Image rest-slice( seq -- slice )
Image reverse( seq -- newseq )
Image reverse!( seq -- seq )
Image second( seq -- second )
Image selector( quot -- selector accum )
Image selector-as( quot exemplar -- selector accum )
Image sequence-hashcode( depth seq -- x )
Image sequence=( seq1 seq2 -- ? )
Image set-first( first seq -- )
Image set-fourth( fourth seq -- )
Image set-last( elt seq -- )
Image set-second( second seq -- )
Image set-third( third seq -- )
Image shorter( seq1 seq2 -- seq )
Image shorter?( seq1 seq2 -- ? )
Image shortest( seqs -- elt )
Image sift( seq -- newseq )
Image slice-error( from to seq -- * )
Image snip( from to seq -- head tail )
Image snip-slice( from to seq -- head tail )
Image subseq( from to seq -- subseq )
Image subseq-as( from to seq exemplar -- subseq )
Image subseq-index( seq subseq -- i/f )
Image subseq-index-from( n seq subseq -- i/f )
Image subseq-of?( seq subseq -- ? )
Image subseq-start( subseq seq -- i/f )
Image subseq-start-from( subseq seq n -- i/f )
Image subseq-starts-at?( i seq subseq -- ? )
Image subseq?( subseq seq -- ? )
Image suffix( seq elt -- newseq )
Image suffix!( seq elt -- seq )
Image supremum( seq -- elt )
Image supremum-by( ... seq quot: ( ... elt -- ... x ) -- ... elt )
Image surround( seq1 seq2 seq3 -- newseq )
Image surround-as( seq1 seq2 seq3 exemplar -- newseq )
Image tail( seq n -- tailseq )
Image tail*( seq n -- tailseq )
Image tail-slice( seq n -- slice )
Image tail-slice*( seq n -- slice )
Image tail?( seq end -- ? )
Image third( seq -- third )
Image trim( ... seq quot: ( ... elt -- ... ? ) -- ... newseq )
Image trim-head( ... seq quot: ( ... elt -- ... ? ) -- ... newseq )
Image trim-head-slice( ... seq quot: ( ... elt -- ... ? ) -- ... slice )
Image trim-slice( ... seq quot: ( ... elt -- ... ? ) -- ... slice )
Image trim-tail( ... seq quot: ( ... elt -- ... ? ) -- ... newseq )
Image trim-tail-slice( ... seq quot: ( ... elt -- ... ? ) -- ... slice )
Image unclip( seq -- rest first )
Image unclip-last( seq -- butlast last )
Image unclip-last-slice( seq -- butlast-slice last )
Image unclip-slice( seq -- rest-slice first )
Image unless-empty( ... seq quot: ( ... seq -- ... ) -- ... )
Image when-empty( ... seq quot: ( ... -- ... obj ) -- ... seq/obj )


Class predicate words
WordStack effect
Image assert-sequence?( object -- ? )
Image bounds-error?( object -- ? )
Image immutable-sequence?( object -- ? )
Image immutable?( object -- ? )
Image iota?( object -- ? )
Image repetition?( object -- ? )
Image reversed?( object -- ? )
Image sequence?( object -- ? )
Image slice-error?( object -- ? )
Image slice?( object -- ? )
Image virtual-sequence?( object -- ? )
Image wrapped-sequence?( object -- ? )


Files


Metadata files


Children from resource:core
VocabularySummary
Image sequences.sequences-tests.factor
Image sequences.sequences.factor
Image sequences.summary.txt
Image sequences.sequences-docs.factor
Image sequences.authors.txt
Image sequences.tags.txt


Children from resource:basis
VocabularySummary
Image sequences.windowed
Image sequences.cordsVirtual sequence concatenation
Image sequences.complexVirtual sequence wrapper to convert real pairs into complex values
Image sequences.paddedVirtual "padded" sequences
Image sequences.deepSequence/tree combinators like deep-map, deep-each, etc
Image sequences.productCartesian products of sequences
Image sequences.unrolledUnrolled fixed-length sequence iteration
Image sequences.complex-componentsVirtual sequence wrapper to convert complex values into real value pairs
Image sequences.generalizations
Image sequences.mergedA virtual sequence which merges (interleaves) other sequences.


Children from resource:extra
VocabularySummary
Image sequences.abbrev
Image sequences.seq
Image sequences.repeating
Image sequences.parser
Image sequences.suffixed
Image sequences.insertersDirect the output of map-as, filter-as, etc. combinators into existing growable sequences
Image sequences.squishSequence flattening with parameterized descent predicate
Image sequences.interleavedInterleaved sequences
Image sequences.prefixed
Image sequences.modified
Image sequences.n-basedSequence adaptor to treat a sequence as an n-based assoc
Image sequences.frozenVirtual "frozen" sequences
Image sequences.shiftedShifted virtual sequences
Image sequences.zippedVirtual "zip" sequences
Image sequences.snippedSnipped virtual sequences
Image sequences.rotatedRotated virtual sequences
Image sequences.extrasContains sequence operations that are not commonly needed. Most of these words are elaborations on functions already available in the main sequences vocabulary.