sig
  type ('a, 'b) t
  val empty : ('a, 'b) Extfun.t
  val apply : ('a, 'b) Extfun.t -> '-> 'b
  exception Failure
  val print : ('a, 'b) Extfun.t -> unit
end