]> gitweb.factorcode.org Git - factor.git/blob - extra/sequences/interleaved/interleaved.factor
Switch to https urls
[factor.git] / extra / sequences / interleaved / interleaved.factor
1 ! Copyright (C) 2018 John Benediktsson.
2 ! See https://factorcode.org/license.txt for BSD license.
3
4 USING: accessors kernel math math.order sequences
5 sequences.private ;
6
7 IN: sequences.interleaved
8
9 TUPLE: interleaved { seq read-only } { elt read-only } ;
10
11 C: <interleaved> interleaved
12
13 M: interleaved length seq>> length dup 1 - + 0 max ;
14
15 M: interleaved nth-unsafe
16     over even? [
17         [ 2/ ] [ seq>> ] bi* nth-unsafe
18     ] [
19         nip elt>>
20     ] if ;
21
22 M: interleaved like seq>> like ;
23
24 M: interleaved new-sequence seq>> new-sequence ;
25
26 INSTANCE: interleaved immutable-sequence