sig
type param
type result
val apply : param -> result
val is_empty : unit -> bool
val clear : unit -> unit
val length : unit -> int
type key
type id
val register_key : Hook.S_ordered.key -> Hook.S_ordered.id
val extend : Hook.S_ordered.id -> (param -> result) -> unit
val extend_once : Hook.S_ordered.id -> (param -> result) -> unit
val add_dependency : Hook.S_ordered.id -> Hook.S_ordered.id -> unit
end