Variable
A Variable is a pair of a unique ID.t, and a type.
It is used in TypedSTerm.t for manipulating free and bound variables.
Sourceval of_string : ty:'a -> string -> 'a t Make a fresh ID before calling make
Sourceval gensym : ty:'a -> unit -> 'a t copy v is similar to v but with a fresh ID
Sourceval update_ty : 'a t -> f:('a -> 'b) -> 'b t Make a fresh variable with a new type and same ID
Sourceval to_string : _ t -> string