functor (X : Named_intf.S0-> sig val typename_of_t : X.t typename end