factor/basis/sequences/merged/merged.factor

32 lines
835 B
Factor
Raw Normal View History

2008-05-18 05:09:56 -04:00
! Copyright (C) 2008 Alex Chapman
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays kernel math math.order sequences
sequences.private ;
2008-05-18 05:09:56 -04:00
IN: sequences.merged
TUPLE: merged seqs ;
C: <merged> merged
: <2merged> ( seq1 seq2 -- merged ) 2array <merged> ;
: <3merged> ( seq1 seq2 seq3 -- merged ) 3array <merged> ;
: merge ( seqs -- seq )
[ <merged> ] keep first like ;
2008-05-18 05:09:56 -04:00
: 2merge ( seq1 seq2 -- seq )
[ <2merged> ] 2keep drop like ;
2008-05-18 05:09:56 -04:00
: 3merge ( seq1 seq2 seq3 -- seq )
[ <3merged> ] 3keep 2drop like ;
2008-05-18 05:09:56 -04:00
M: merged length
seqs>> [ [ length ] [ min ] map-reduce ] [ length ] bi * ; inline
2008-05-18 05:09:56 -04:00
M: merged virtual@ ( n seq -- n' seq' )
seqs>> [ length /mod ] [ nth-unsafe ] bi ; inline
2008-05-18 05:09:56 -04:00
M: merged virtual-exemplar ( merged -- seq )
2011-10-13 15:53:46 -04:00
seqs>> ?first ; inline
2008-05-18 05:09:56 -04:00
INSTANCE: merged virtual-sequence