1 ! Copyright (C) 2008 Alex Chapman
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays kernel math math.order sequences
10 : <2merged> ( seq1 seq2 -- merged ) 2array <merged> ;
11 : <3merged> ( seq1 seq2 seq3 -- merged ) 3array <merged> ;
13 : merge ( seqs -- seq )
14 [ <merged> ] keep first like ;
16 : 2merge ( seq1 seq2 -- seq )
17 [ <2merged> ] keepd like ;
19 : 3merge ( seq1 seq2 seq3 -- seq )
20 [ <3merged> ] keepdd like ;
23 seqs>> [ [ length ] [ min ] map-reduce ] [ length ] bi * ; inline
25 M: merged virtual@ ( n seq -- n' seq' )
26 seqs>> [ length /mod ] [ nth-unsafe ] bi ; inline
28 M: merged virtual-exemplar ( merged -- seq )
29 seqs>> ?first ; inline
31 INSTANCE: merged virtual-sequence