I've developed small preprocessor module that provides kind of namespace support for the Objective Caml. It defines following constructs: * module ModuleName in [Namespace|Namespace.Namespace] it defines module ModuleName within namespace Examples: module Test in Org.Openeas = struct let test = () end module Test in Org.Openeas : sig val test:unit end * module type ModuleTypeName in [Namespace|Namespace.Namespace] it defines module type ModuleTypeName within namespace Example: module type T = sig val test:unit end * open ModuleName in [Namespace|Namespace.Namespace] it opens module ModuleName from namespace Example: open Unix in Org.Ocaml * open ModuleName in [Namespace|Namespace.Namespace] as NewModuleName the same as previous, but also renames module ModuleName to NewModuleName Example: open Unix in Org.Ocaml as CamlUnix * use [Namespace|Namespace.Namespace] it opens namespace module. If namespace name contains dots, they are replaced with underline. Example: use Org.Openeas If somebody is interested, I want to hear comments, questions, bugs of current implementation and so on. Early source code is attached. -- Thanks, Yurii.