1 ! Copyright (C) 2010 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: sequences accessors kernel locals assocs ;
6 TUPLE: indexed-seq dseq iseq rassoc ;
7 INSTANCE: indexed-seq sequence
10 iseq>> length ; inline
13 [ iseq>> nth ] keep dseq>> nth ; inline
15 M:: indexed-seq set-nth ( elt n seq -- )
18 seq rassoc>> :> rassoc
19 seq length n = not [ elt n seq immutable ] when
31 : <indexed-seq> ( dseq-exemplar iseq-exemplar rassoc-exemplar -- indexed-seq )
37 M: indexed-seq new-resizable
38 [ dseq>> ] [ iseq>> ] [ rassoc>> ] tri <indexed-seq>
40 [ [ dseq>> new-resizable ] keep dseq<< ]
41 [ [ iseq>> new-resizable ] keep iseq<< ]
42 [ [ rassoc>> clone nip ] keep rassoc<< ]