MkSTSequence
functorfunctor MkSTSequence (structure Seq :
SEQUENCE) :>
ST_SEQUENCE
where Seq = Seq
Implements single-threated sequences via a state ref
and
history. If the state is CUR a
, then the single-threaded
sequence is current and $a$ can be accessed immediately. Otherwise, if the
state is MOD
, the single-threaded sequence needs to be
reconstructed from history — that is, by sequentially applying every
update to the original sequence from which the single-threaded sequence was
created.
ST_SEQUENCE
Cost SpecificationsWork | Span | |
nth $S\ i$update $(S, (i, x))$
|
\[O(1)\] | \[O(1)\] |
inject $(S, U)$ |
\[O(|U|)\] | \[O(1)\] |
The following assumes Seq
=
ArraySequence
. For another choice
of Seq
, refer directly to the implementations of
fromSeq
and toSeq
.
Work | Span | |
fromSeq $S$toSeq $S$
|
\[O(|S|)\] | \[O(1)\] |