val create : 'a -> 'a tval (!) : 'a t -> 'aval (:=) : 'a t -> 'a -> unitval replace : 'a t -> ('a -> 'a) -> unitreplace t f is t := f !t
val set_temporarily : 'a t -> 'a -> f:(unit -> 'b) -> 'bset_temporarily t a ~f sets t to a, calls f (), and then restores t to its value prior to set_temporarily being called, whether f returns or raises.