functor (M : sig type t end) -> sig type t = M.t val add_hook : string -> (hook_info -> t -> t) -> unit val apply_hooks : hook_info -> t -> t end