type 'a ref val ref : 'a -> ('a ref -> 'b) -> 'b val (!) : 'a ref -> 'a val (:=) : 'a ref -> 'a -> unit