Source file current_incr.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
type 'a t = 'a Modifiable.t
type 'a cc = 'a t -> Modifiable.changeable
type 'a var = 'a t
let var x =
Modifiable.create (fun d -> Modifiable.write ~eq:(==) d x)
let of_var x = x
let const = var
let write ?(eq=(==)) x d = Modifiable.write ~eq d x
let read x f d = Modifiable.read x (fun y -> f y d)
let of_cc = Modifiable.create
let map ?eq f x = of_cc (read x (fun x -> write ?eq (f x)))
let change ?(eq=(==)) = Modifiable.change ~eq
let propagate = Modifiable.propagate
let observe = Modifiable.deref
let on_release = Modifiable.on_release
module Separate = Modifiable.Separate