type ('a, _) thunk = | Value : 'a -> ('a, 'b) thunk| Thunk : 'a Stdlib.Lazy.t -> ('a, [ `thunk ]) thunk
val get : ('a, 'b) t -> 'aval get_thunk : ('a, 'b) thunk -> 'aval make : ?loc:Loc.t -> 'a -> ('a, 'b) tval delay : ?loc:Loc.t -> (unit -> 'a) -> ('a, [ `thunk ]) tval force : ('a, 'b) t -> ('a, 'b) tval map : ('a -> 'b) -> ('a, 'c) t -> ('b, 'c) tval map_with_loc : (?loc:Loc.t -> 'a -> 'b) -> ('a, 'c) t -> ('b, 'c) tval with_val : ('a -> 'b) -> ('a, 'c) t -> 'bval with_loc_val : (?loc:Loc.t -> 'a -> 'b) -> ('a, 'c) t -> 'b