Batteries_uni.Ref

# Module Batteries_uni.Ref

    module Ref: BatRef

    type 'a t = 'a Pervasives.ref

The type of references.

    val ref : 'a -> 'a Pervasives.ref

Return a fresh reference containing the given value.

    val (!) : 'a Pervasives.ref -> 'a

`!r` returns the current contents of reference `r`. Equivalent to `fun r -> r.contents`.

    val (:=) : 'a Pervasives.ref -> 'a -> unit

`r := a` stores the value of `a` in reference `r`. Equivalent to `fun r v -> r.contents <- v`.

    val set : 'a Pervasives.ref -> 'a -> unit

As `:=`

    val get : 'a Pervasives.ref -> 'a

As `!`

    val copy : 'a Pervasives.ref -> 'a Pervasives.ref

`copy r` returns a new reference with the same initial content as `r`.

    val pre : 'a Pervasives.ref -> ('a -> 'a) -> 'a

Perform an operation on a reference and return the new value of that reference.

For instance, if `x` is a reference to `1`, `pre x ( ( + ) 1)` returns `2` and sets `x` to `2`.

    val post : 'a Pervasives.ref -> ('a -> 'a) -> 'a

Perform an operation on a reference and return the previous value of that reference.

For instance, if `x` is a reference to `1`, `post x ( ( + ) 1)` returns `1` and sets `x` to `2`.

    val swap : 'a Pervasives.ref -> 'a Pervasives.ref -> unit

`swap a b` puts `!b` in `a` and `!a` in `b`

    val post_incr : int Pervasives.ref -> int

Increment an integer, return the old value.

Comparable to C or Java's `i++`.

    val post_decr : int Pervasives.ref -> int

Decrement an integer, return the old value.

Comparable to C or Java 's `i--`.

    val pre_incr : int Pervasives.ref -> int

Increment an integer, return the new value.

Comparable to C or Java's `++i`.

    val pre_decr : int Pervasives.ref -> int

Increment an integer, return the new value.

Comparable to C or Java's `--i`.

    val protect : 'a Pervasives.ref -> 'a -> (unit -> 'b) -> 'b

Assign a reference temporarily.

`protect r v body` sets the value of `r` to `v` and executes `body`. Once body has been executed, whether termination happens as a consequence of regular evaluation or exception, the previous value of `r` is restored.

###### Boilerplate code

Printing

    val print : ('a BatInnerIO.output -> 'b -> unit) ->
           'a BatInnerIO.output -> 'b t -> unit