BatUref
Unifiable references using destructive union-find
type 'a t = 'a uref
A synonym for convenience
val uref : 'a -> 'a uref
uref x
allocates a new uref and places the value x
in it.
val uget : 'a uref -> 'a
uget ur
returns the value stored in the uref ur
.
val uset : 'a uref -> 'a -> unit
uset ur x
updates the contents of ur
with x
.
unite ~sel ur1 ur2
unites the urefs ur1
and ur2
, selecting the result of sel (uget ur1) (uget ur2)
for the contents of the resulting united uref. After this operation, uget ur1 ==
uget ur2
. By default, sel
is fun x _y -> x
.
equal ur1 ur2
returns true
iff ur1
and ur2
are equal urefs, either because they are physically the same or because they have been unite
d.
val print : ('a, 'b) BatIO.printer -> ('a uref, 'b) BatIO.printer
Print the uref.