functor (M : Hashtbl.HashedType->
  sig
    val memo : ?size:int -> (M.t -> 'a) -> M.t -> 'a
    val memo_recursive : ?size:int -> ((M.t -> 'a) -> M.t -> 'a) -> M.t -> 'a
  end