ReactiveData.RListSourceinclude module type of ReactiveData.RList
with type 'a t = 'a ReactiveData.RList.t
and type 'a handle = 'a ReactiveData.RList.handlePatch operation on lists. All operations are of linear complexity.
A patch is a list of patch operations. The operations are applied in the order they appear in the list.
The indices correspond to list contents after the operations that appear earlier in the list have been applied, not to the contents before the whole patch operation.
A patch comprised of I, R, and U steps with increasing indices can be applied in time O(m + n), where m is the patch length and n is the current size of the list. (Arbitrary patches are slower, requiring O(m * n).)
include ReactiveData.S
with type 'a data = 'a list
and type 'a patch := 'a patch
with type 'a t = 'a ReactiveData.RList.t
with type 'a handle = 'a ReactiveData.RList.handleReactive version of the data container
Raw (non-reactive) version of the data container
Message format
Handle that permits applying incremental updates
from_event d e is a container whose initial value is d, and which gets updated for every occurrence of e
patch h p applies p on the container corresponding to h
set h d sets the contents of the container corresponding to h, disregarding previous contents
fold f c v accumulates the updates on c with f starting from v.
The result is a signal of value f m_n (f ... (f m_1 v)), where m_1 ... m_n are the messages that have been applied since the beginning of fold. m_1 is a pseudo-message Set l, accounting for the contents l of c at the time when accumulation starts.
insert v i h adds v as the i-th position in the container corresponding to h. The indices of the subsequent elements change.
remove i h removes the i-th position from the container corresponding to h. The indices of the subsequent elements change.
remove_eq l x removes the first occurence of x from l
update v i h substitutes the i-th element of the container corresponding to h with v
update_eq l a b substitutes the first occurence of a (according to eq) in l with b
move i offset h moves the i-th element of the container corresponding by offset positions in h, modifying the indices of other elements
filter pred l keeps the elements of l matching pred; gets updated when l is. pred should be a pure function
include Eliom_shared_sigs.RLIST
with type 'a t := 'a t
and type 'a sv := 'a Value.t
and type 'a handle := 'a handle
and type 'a signal := 'a React.S.t
and type 'a ct := 'a ReactiveData.RList.t
and type 'a chandle := 'a ReactiveData.RList.handleval create :
?default:
('a ReactiveData.RList.t * 'a ReactiveData.RList.handle) option
Eliom_client_value.t ->
?reset_default:bool ->
'a list ->
'a t * 'a handlecreate ?default ?reset_default l produces a pair l, f, where s is a (shared) reactive list, and f is a handle for manipulating the list.
The initial value of the list is l, unless default is provided. default, if provided, is used as the client-side list (and corresponding handle). reset_default, if set to true (default: false), resets the value of default to l.