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