sig   type param   type result   val extend : (Hook.S.param -> Hook.S.result) -> unit   val extend_once : (Hook.S.param -> Hook.S.result) -> unit   val apply : Hook.S.param -> Hook.S.result   val is_empty : unit -> bool   val clear : unit -> unit   val length : unit -> int end