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