package signal
Install
Dune Dependency
Authors
Maintainers
Sources
md5=148304dae155143735be91fb978466ce
sha512=8130b18dd73975b718c684a588d041d6a9d5ec7e2b23deb179d90e93d9c49b70ce4af1134c353052de7e8669984f855327c74f90ec64cac4d398c6802fa9594d
doc/signal/Signal/index.html
Module Signal
Source
Reactive signals.
The type for signals that emit values of type 'a
.
Creating signals
make x
is a signal with an initial value x
.
reducer f init
is (signal, dispatch)
, that is, a reducer signal and a dispatch function. The signal starts with the initial accumulator value init
. Whenever dispatch
is called with a value, the accumulator is updated using f
and emitted to signal
.
null
is a constant signal of ()
. It ignores it's subscribers and ignores values emitted to it.
Notifications
Notifications control the propagation of signal values to subscribers. The value emitting functions such as emit
and update
accept an optional ~notify
argument which changes the propagation strategy. For example, it is possible to fully prevent notifying the subscribers by using Signal.emit ~notify:Signal.never
and later call Signal.trigger
to notify the subscribers at a more appropriate time.
The type for notifications.
An notification that never notifies the subscribers.
A notification that notifies subscribers immediately.
scope f
calls f
with a notification that can be used to batch notify all subscribers for emits that happened in f
's scope. The current values of the signals are still changed immediately.
Updating, getting and propagating values
emit ?notify x s
changes the value of signal s
to x
. The emitted value will be dispatched to all subscribers of s
according to notify
(defaults to now
).
set x s
is emit ~notify:never x s
, that is, using set
changes the current value of the signal s
, but will not notify the subscribers.
update ?step f s
changes the current value of s
using f
, emitting the result.
Subscribing to values
The type for subscription handlers. Call to unsubscribe.
use f s
permanently subscribes to s
and immediately calls the callback f
with the current value of the signal.
use' f s
subscribes to s
and immediately calls the callback f
with the current value of the signal. Returns a subscription handle that can be used to unsubscribe f
from the signal s
.
use2 f s1 s2
permanently subscribes to s1
and s2
and immediately calls the callback f
with the current values of the signals.
sub f s
permanently subscribes to s
without immediately calling f
, instead f
is called when new values are emitted to s
.
sub' f s
subscribes to s
without immediately calling f
, instead f
is called when new values are emitted to s
. Returns a subscription handle that can be used to unsubscribe f
from the signal s
.
sub2 f s1 s2
permanently subscribes to s1
and s2
without immediately calling f
, instead f
is called when new values are emitted to s1
or s2
.
Transforming signals
map f s
is a signal derived from s
with the values mapped using f
.
Note that the resulting signal can be subsribed to independently from s
.
map f s1 s2
is a signal that combines the values from s1
and s2
using f
.
map f s1 s2 s3
is a signal that combines the values from s1
, s2
and s3
using f
.
const x s
is a constant signal transformer for s
. That is, it will always emits x
whenever values are emitted to s
.
tap f s
intercepts all values emitted by signal s
and calls the effectful function f
with the value.
filter pred ~seed s
is a signal derived from s
that only emits values that satisfy the predicate pred
. If the current value of s
does not satisfy pred
, the value of the filtered signal is set to seed
.
Note that the resulting signal can be subsribed to independently from s
.
filter_map f ~seed s
is a signal derived from s
that emits values transformed with f
that are not None
. If the current value of s
results in None
, the value of the signal is set to seed
.
Note that the resulting signal can be subsribed to independently from s
.
reduce f init s
is a signal computed from continously updating init
using a reducing function f
applied to init
and emitted values from s
.
Emitting values directly to this signal will reset the internal accumulator.
uniq ?equal s
is a signal that prevents emitting values to subscribers that are considered equal according to equal
. By default physical equality is used for equal
.
Combining signals
select l
is a signal that selects values emitted by all signals in list l
.
Raises: Invalid_argument
if l
is empty.
pair s1 s2
is a signal that combines the values from s1
and s2
and emits them as pairs.
triple s1 s2 s3
is a signal that combines the values from s1
, s2
and s3
and emits them as triple.
apply f_s x_s
is a signal produced from applying values from signal x_s
to the functions in signal f_s
.
sample ?equal ~on:s1 s2
samples values from s2
any time a value is emitted to s1
.
forward s1 s2
forwards all values emitted by s1
to s2
.