package lwd
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=09d9ebbffb172789938869136562d7b70818d6167f4bb05b8b187c08af3b3221
sha512=a88cfbdce6ecd280d10c34a712b685b44c712981ac85e500dab1518e513f9ac0bc02d0469184df927ab86f29e330b3439bb7eb8fb9a11f90a0a37bf46fdaa53e
doc/lwd/Lwd_seq/index.html
Module Lwd_seq
Source
Sequence manipulation
Lwd_seq
is an ordered collection with a pure interface. Changes to collections are easy to track.
A collection can be transformed with the usual map, filter and fold combinators. If the collection is updated, shared elements (in the sense of physical sharing), the result of the previous transformation will be reused for these elements.
The book-keeping overhead is O(n) in the number of changes, so O(1) per element.
Primitive constructors
A singleton sequence. The physical identity of the element is considered when reusing previous computations.
If you do:
let x1 = element x
let x2 = element x
Then x1
and x2
are seen as different elements and no sharing will be done during transformation.
Concatenate two sequences into a bigger one. As for element
, the physical identity of a sequence is considered for reuse.
Looking at sequence contents
Conversion between sequences, lists and arrays
Produce a sequence by transforming each element of a list and concatenating all results.
Produce a sequence by transforming each element of an array and concatenating all results.
Balanced variant of sequences
A variant of the sequence type that guarantees that the depth of a transformation, measured as the number of nested concat
nodes, grows in O(log n) where n is the number of elements in the sequnce.
Transforming sequences
All sequences live in Lwd
monad: if a sequence changes slightly, parts that have not changed will not be re-transformed.
fold ~map ~reduce
transforms a sequence. If the sequence is non-empty, the map
function is applied to element nodes and the reduce
function is used to combine transformed concatenated nodes. If the sequence is empty, None is returned.
Like fold
, but reduction and default value are defined by a monoid
map f
transforms a sequence by applying f
to each element.
filter p
transforms a sequence by keeping elements that satisfies p
.
Filter and map elements at the same time
Monoid instance for sequences
Monoid instance for reactive sequences