]> gitweb.factorcode.org Git - factor.git/blob - extra/sequences/padded/padded.factor
factor: trim using lists
[factor.git] / extra / sequences / padded / padded.factor
1 ! Copyright (C) 2020 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3 USING: accessors kernel math math.order sequences sequences.private ;
4 IN: sequences.padded
5
6 TUPLE: padded
7 { underlying sequence read-only }
8 { length integer read-only }
9 { elt object read-only } ;
10
11 TUPLE: padded-head < padded ;
12 TUPLE: padded-tail < padded ;
13
14 C: <padded-head> padded-head
15 C: <padded-tail> padded-tail
16
17 M: padded length
18     [ underlying>> length ] [ length>> ] bi max ;
19
20 M: padded-head nth-unsafe
21     [ [ length>> ] [ underlying>> ] bi [ length [-] - ] keep ] keep
22     2over bounds-check? [ drop nth-unsafe ] [ 2nip elt>> ] if ;
23
24 M: padded-tail nth-unsafe
25     [ underlying>> ] keep 2over bounds-check?
26     [ drop nth-unsafe ] [ 2nip elt>> ] if ;
27
28 INSTANCE: padded immutable-sequence
29