sig
module type S =
sig
type 'a t
type 'a data
type 'a patch
type 'a msg =
Patch of 'a ReactiveData.S.patch
| Set of 'a ReactiveData.S.data
type 'a handle
val empty : 'a ReactiveData.S.t
val create :
'a ReactiveData.S.data ->
'a ReactiveData.S.t * 'a ReactiveData.S.handle
val from_event :
'a ReactiveData.S.data ->
'a ReactiveData.S.msg React.E.t -> 'a ReactiveData.S.t
val from_signal :
?eq:('a -> 'a -> bool) ->
'a ReactiveData.S.data React.S.t -> 'a ReactiveData.S.t
val const : 'a ReactiveData.S.data -> 'a ReactiveData.S.t
val patch : 'a ReactiveData.S.handle -> 'a ReactiveData.S.patch -> unit
val set : 'a ReactiveData.S.handle -> 'a ReactiveData.S.data -> unit
val map_msg :
('a -> 'b) -> 'a ReactiveData.S.msg -> 'b ReactiveData.S.msg
val map : ('a -> 'b) -> 'a ReactiveData.S.t -> 'b ReactiveData.S.t
val value : 'a ReactiveData.S.t -> 'a ReactiveData.S.data
val fold :
('a -> 'b ReactiveData.S.msg -> 'a) ->
'b ReactiveData.S.t -> 'a -> 'a React.signal
val signal :
?eq:('a -> 'a -> bool) ->
'a ReactiveData.S.t -> 'a ReactiveData.S.data React.S.t
val event : 'a ReactiveData.S.t -> 'a ReactiveData.S.msg React.E.t
end
module RList :
sig
type 'a p = I of int * 'a | R of int | U of int * 'a | X of int * int
type 'a patch = 'a ReactiveData.RList.p list
type 'a t
type 'a data = 'a list
type 'a msg = Patch of 'a patch | Set of 'a data
type 'a handle
val empty : 'a t
val create : 'a data -> 'a t * 'a handle
val from_event : 'a data -> 'a msg React.E.t -> 'a t
val from_signal : ?eq:('a -> 'a -> bool) -> 'a data React.S.t -> 'a t
val const : 'a data -> 'a t
val patch : 'a handle -> 'a patch -> unit
val set : 'a handle -> 'a data -> unit
val map_msg : ('a -> 'b) -> 'a msg -> 'b msg
val map : ('a -> 'b) -> 'a t -> 'b t
val value : 'a t -> 'a data
val fold : ('a -> 'b msg -> 'a) -> 'b t -> 'a -> 'a React.signal
val signal : ?eq:('a -> 'a -> bool) -> 'a t -> 'a data React.S.t
val event : 'a t -> 'a msg React.E.t
val cons : 'a -> 'a handle -> unit
val snoc : 'a -> 'a handle -> unit
val insert : 'a -> int -> 'a handle -> unit
val remove : int -> 'a handle -> unit
val update : 'a -> int -> 'a handle -> unit
val move : int -> int -> 'a handle -> unit
val singleton : 'a -> 'a t
val singleton_s : 'a React.S.t -> 'a t
val concat : 'a t -> 'a t -> 'a t
val rev : 'a t -> 'a t
end
module RMap :
functor (M : Map.S) ->
sig
type 'a t
type 'a data = 'a M.t
type 'a patch = [ `Add of M.key * 'a | `Del of M.key ] list
type 'a msg = Patch of 'a patch | Set of 'a data
type 'a handle
val empty : 'a t
val create : 'a data -> 'a t * 'a handle
val from_event : 'a data -> 'a msg React.E.t -> 'a t
val from_signal : ?eq:('a -> 'a -> bool) -> 'a data React.S.t -> 'a t
val const : 'a data -> 'a t
val patch : 'a handle -> 'a patch -> unit
val set : 'a handle -> 'a data -> unit
val map_msg : ('a -> 'b) -> 'a msg -> 'b msg
val map : ('a -> 'b) -> 'a t -> 'b t
val value : 'a t -> 'a data
val fold : ('a -> 'b msg -> 'a) -> 'b t -> 'a -> 'a React.signal
val signal : ?eq:('a -> 'a -> bool) -> 'a t -> 'a data React.S.t
val event : 'a t -> 'a msg React.E.t
end
module type DATA =
sig
type 'a data
type 'a patch
val merge :
'a ReactiveData.DATA.patch ->
'a ReactiveData.DATA.data -> 'a ReactiveData.DATA.data
val map_patch :
('a -> 'b) ->
'a ReactiveData.DATA.patch -> 'b ReactiveData.DATA.patch
val map_data :
('a -> 'b) -> 'a ReactiveData.DATA.data -> 'b ReactiveData.DATA.data
val empty : 'a ReactiveData.DATA.data
val equal :
('a -> 'a -> bool) ->
'a ReactiveData.DATA.data -> 'a ReactiveData.DATA.data -> bool
val diff :
eq:('a -> 'a -> bool) ->
'a ReactiveData.DATA.data ->
'a ReactiveData.DATA.data -> 'a ReactiveData.DATA.patch
end
module Make :
functor (D : DATA) ->
sig
type 'a t
type 'a data = 'a D.data
type 'a patch = 'a D.patch
type 'a msg = Patch of 'a patch | Set of 'a data
type 'a handle
val empty : 'a t
val create : 'a data -> 'a t * 'a handle
val from_event : 'a data -> 'a msg React.E.t -> 'a t
val from_signal : ?eq:('a -> 'a -> bool) -> 'a data React.S.t -> 'a t
val const : 'a data -> 'a t
val patch : 'a handle -> 'a patch -> unit
val set : 'a handle -> 'a data -> unit
val map_msg : ('a -> 'b) -> 'a msg -> 'b msg
val map : ('a -> 'b) -> 'a t -> 'b t
val value : 'a t -> 'a data
val fold : ('a -> 'b msg -> 'a) -> 'b t -> 'a -> 'a React.signal
val signal : ?eq:('a -> 'a -> bool) -> 'a t -> 'a data React.S.t
val event : 'a t -> 'a msg React.E.t
end
end