# Module Lwt_react.S

    module S: sig .. end

    include React.S

###### Monadic interface

    val return : 'a -> 'a Lwt_react.signal

Same as `const`.

    val bind : ?eq:('b -> 'b -> bool) ->
           'a Lwt_react.signal -> ('a -> 'b Lwt_react.signal) -> 'b Lwt_react.signal

`bind ?eq s f` is initially `f x` where `x` is the current value of `s`. Each time `s` changes to a new value `y`, `bind signal f` is set to `f y`, until the next change of `signal`.

    val bind_s : ?eq:('b -> 'b -> bool) ->
           'a Lwt_react.signal ->
           ('a -> 'b Lwt_react.signal Lwt.t) -> 'b Lwt_react.signal Lwt.t

Same as `Lwt_react.S.bind` except that `f` returns a thread. Calls to `f` are serialized.

###### Lwt-specific utilities

    val with_finaliser : (unit -> unit) -> 'a Lwt_react.signal -> 'a Lwt_react.signal

`with_finaliser f s` returns a signal `s'` which behave as `s`, except that `f` is called when `s'` is garbage collected.

    val limit : ?eq:('a -> 'a -> bool) ->
           (unit -> unit Lwt.t) -> 'a Lwt_react.signal -> 'a Lwt_react.signal

`limit f s` limits the rate of `s` update with `f`.

For example, to limit it to 1 per second, you can use: `limit (fun () -> Lwt_unix.sleep 1.0) s`.

    val keep : 'a Lwt_react.signal -> unit

`keep s` keeps a reference to `s` so it will never be garbage collected.

###### Threaded versions of React transformation functions

The following functions behave as their `React` counterpart, except that they takes functions that may yield.

The `_s` suffix means that calls are serialized.

    val app_s : ?eq:('b -> 'b -> bool) ->
           ('a -> 'b Lwt.t) Lwt_react.signal ->
           'a Lwt_react.signal -> 'b Lwt_react.signal Lwt.t

    val map_s : ?eq:('b -> 'b -> bool) ->
           ('a -> 'b Lwt.t) -> 'a Lwt_react.signal -> 'b Lwt_react.signal Lwt.t

    val filter_s : ?eq:('a -> 'a -> bool) ->
           ('a -> bool Lwt.t) -> 'a -> 'a Lwt_react.signal -> 'a Lwt_react.signal Lwt.t

    val fmap_s : ?eq:('b -> 'b -> bool) ->
           ('a -> 'b option Lwt.t) ->
           'b -> 'a Lwt_react.signal -> 'b Lwt_react.signal Lwt.t

    val diff_s : ('a -> 'a -> 'b Lwt.t) -> 'a Lwt_react.signal -> 'b Lwt_react.event

    val sample_s : ('b -> 'a -> 'c Lwt.t) ->
           'b Lwt_react.event -> 'a Lwt_react.signal -> 'c Lwt_react.event

    val accum_s : ?eq:('a -> 'a -> bool) ->
           ('a -> 'a Lwt.t) Lwt_react.event -> 'a -> 'a Lwt_react.signal

    val fold_s : ?eq:('a -> 'a -> bool) ->
           ('a -> 'b -> 'a Lwt.t) -> 'a -> 'b Lwt_react.event -> 'a Lwt_react.signal

    val merge_s : ?eq:('a -> 'a -> bool) ->
           ('a -> 'b -> 'a Lwt.t) ->
           'a -> 'b Lwt_react.signal list -> 'a Lwt_react.signal Lwt.t

    val l1_s : ?eq:('b -> 'b -> bool) ->
           ('a -> 'b Lwt.t) -> 'a Lwt_react.signal -> 'b Lwt_react.signal Lwt.t

    val l2_s : ?eq:('c -> 'c -> bool) ->
           ('a -> 'b -> 'c Lwt.t) ->
           'a Lwt_react.signal -> 'b Lwt_react.signal -> 'c Lwt_react.signal Lwt.t

    val l3_s : ?eq:('d -> 'd -> bool) ->
           ('a -> 'b -> 'c -> 'd Lwt.t) ->
           'a Lwt_react.signal ->
           'b Lwt_react.signal -> 'c Lwt_react.signal -> 'd Lwt_react.signal Lwt.t

    val l4_s : ?eq:('e -> 'e -> bool) ->
           ('a -> 'b -> 'c -> 'd -> 'e Lwt.t) ->
           'a Lwt_react.signal ->
           'b Lwt_react.signal ->
           'c Lwt_react.signal -> 'd Lwt_react.signal -> 'e Lwt_react.signal Lwt.t

    val l5_s : ?eq:('f -> 'f -> bool) ->
           ('a -> 'b -> 'c -> 'd -> 'e -> 'f Lwt.t) ->
           'a Lwt_react.signal ->
           'b Lwt_react.signal ->
           'c Lwt_react.signal ->
           'd Lwt_react.signal -> 'e Lwt_react.signal -> 'f Lwt_react.signal Lwt.t

    val l6_s : ?eq:('g -> 'g -> bool) ->
           ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g Lwt.t) ->
           'a Lwt_react.signal ->
           'b Lwt_react.signal ->
           'c Lwt_react.signal ->
           'd Lwt_react.signal ->
           'e Lwt_react.signal -> 'f Lwt_react.signal -> 'g Lwt_react.signal Lwt.t

    val run_s : ?eq:('a -> 'a -> bool) ->
           'a Lwt.t Lwt_react.signal -> 'a Lwt_react.signal Lwt.t