]> gitweb.factorcode.org Git - factor.git/blob - basis/sequences/complex/complex.factor
factor: trim using lists
[factor.git] / basis / sequences / complex / complex.factor
1 USING: accessors kernel math sequences sequences.private ;
2 IN: sequences.complex
3
4 TUPLE: complex-sequence seq ;
5 INSTANCE: complex-sequence sequence
6
7 : <complex-sequence> ( sequence -- complex-sequence )
8     complex-sequence boa ; inline
9
10 <PRIVATE
11
12 : complex@ ( n seq -- n' seq' )
13     [ 1 shift ] [ seq>> ] bi* ; inline
14
15 PRIVATE>
16
17 M: complex-sequence length
18     seq>> length -1 shift ;
19 M: complex-sequence nth-unsafe
20     complex@ [ nth-unsafe ] [ [ 1 + ] dip nth-unsafe ] 2bi rect> ;
21 M: complex-sequence set-nth-unsafe
22     complex@
23     [ [ real-part      ] [    ] [ ] tri* set-nth-unsafe ]
24     [ [ imaginary-part ] [ 1 + ] [ ] tri* set-nth-unsafe ] 3bi ;