Module Namespace

module Namespace: sig .. end

module MakeNamespace: 
functor (I : sig
type name 
val print : name -> string
module Map: GMap.S  with type key = name
end) -> Namespace with type name = I.name