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