base

Full standard library replacement for OCaml
IN THIS PACKAGE
Module Base . Ref
type 'a t = 'a ref = {
mutable contents : 'a;
}
val compare : ( 'a -> 'a -> int ) -> 'a t -> 'a t -> int
val equal : ( 'a -> 'a -> bool ) -> 'a t -> 'a t -> bool
include Sexplib0.Sexpable.S1 with type 'a t := 'a t
val t_of_sexp : ( Sexplib0.Sexp.t -> 'a ) -> Sexplib0.Sexp.t -> 'a t
val sexp_of_t : ( 'a -> Sexplib0.Sexp.t ) -> 'a t -> Sexplib0.Sexp.t
val t_sexp_grammar : 'a Sexplib0.Sexp_grammar.t -> 'a t Sexplib0.Sexp_grammar.t
val create : 'a -> 'a t
val (!) : 'a t -> 'a
val (:=) : 'a t -> 'a -> unit
val swap : 'a t -> 'a t -> unit

swap t1 t2 swaps the values in t1 and t2.

val replace : 'a t -> ( 'a -> 'a ) -> unit

replace t f is t := f !t

val set_temporarily : 'a t -> 'a -> f:( unit -> 'b ) -> 'b

set_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.

module And_value : sig ... end
val sets_temporarily : And_value.t list -> f:( unit -> 'a ) -> 'a

sets_temporarily [ ...; T (ti, ai); ... ] ~f sets each ti to ai, calls f (), and then restores all ti to their value prior to sets_temporarily being called, whether f returns or raises.