module type S = sig
(*
type 'a t = 'a CamlinternalLazy.t
*)

type 'a t = 'a Stdcompat__init.lazy_t

(** @since 4.08.0: type 'a t = 'a CamlinternalLazy.t
 *)

exception Undefined 
(** Alias for {!Lazy.Undefined} *)

val from_fun : (unit -> 'a) -> 'a t
(** @since 4.00.0: val from_fun : (unit -> 'a) -> 'a t *)

val from_val : 'a -> 'a t
(** @since 4.00.0: val from_val : 'a -> 'a t *)

val is_val : 'a t -> bool
(** @since 4.00.0: val is_val : 'a t -> bool *)

(*
external force : 'a t -> 'a = "%lazy_force"
*)

val force : 'a t -> 'a

(** @since 3.11.0: external force : 'a t -> 'a = "%lazy_force"
@since 3.07.0: val force : 'a t -> 'a
 *)

val force_val : 'a t -> 'a
(** Alias for {!Lazy.force_val} *)

(*
val lazy_from_fun : (unit -> 'a) -> 'a t
*)

(*
val lazy_from_fun : (unit -> 'a) -> 'a t[@@ocaml.deprecated
                                          "Use Lazy.from_fun instead."]
*)

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



(** @since 4.08.0: val lazy_from_fun : (unit -> 'a) -> 'a t
@since 4.02.0:
val lazy_from_fun : (unit -> 'a) -> 'a t[@@ocaml.deprecated
                                          "Use Lazy.from_fun instead."]
@since 3.07.0: val lazy_from_fun : (unit -> 'a) -> 'a t
 *)

(*
val lazy_from_val : 'a -> 'a t
*)

(*
val lazy_from_val : 'a -> 'a t[@@ocaml.deprecated
                                "Use Lazy.from_val instead."]
*)

val lazy_from_val : 'a -> 'a t



(** @since 4.08.0: val lazy_from_val : 'a -> 'a t
@since 4.02.0:
val lazy_from_val : 'a -> 'a t[@@ocaml.deprecated
                                "Use Lazy.from_val instead."]
@since 3.07.0: val lazy_from_val : 'a -> 'a t
 *)

(*
val lazy_is_val : 'a t -> bool
*)

(*
val lazy_is_val : 'a t -> bool[@@ocaml.deprecated "Use Lazy.is_val instead."]
*)

val lazy_is_val : 'a t -> bool



(** @since 4.08.0: val lazy_is_val : 'a t -> bool
@since 4.02.0:
val lazy_is_val : 'a t -> bool[@@ocaml.deprecated "Use Lazy.is_val instead."]
@since 3.07.0: val lazy_is_val : 'a t -> bool
 *)

end
