Loading [MathJax]/jax/output/CommonHTML/jax.js

The MkSTSequence functor

« 210 Library Documentation

Overview

functor MkSTSequence (structure Seq : SEQUENCE) :> ST_SEQUENCE where Seq = Seq

Implements single-threaded sequences with an underlying mutable array and a history. Every single-threaded sequence is either current or old, depending upon whether or not it has ever been updated. When a single-threaded sequence is current, updates can proceed efficiently on the mutable array, returning a new single-threaded sequence which is current, and modifying the original sequence to be old. When a single-threaded sequence is old, all operations are expensive, and are not considered by the cost semantics given below. In particular, they must build a new array from the history, which costs at least as much as the size of the history.

As long as operations are always performed on a current single-threaded sequence, they are effficient.

ST_SEQUENCE Cost Specifications

The following costs assume that all single-threaded sequences are a current version.

Work Span
nth S i O(1) O(1)
update (S,(i,x)) O(1) O(1)
inject (S,U) O(|U|) O(1)

The following costs assumes Seq = ArraySequence.

Work Span
fromSeq S
toSeq S
O(|S|) O(1)