How would one specify which search path is associated to a given namespace path (eg. Core.Std)? Is it easy to integrate into ocamlfind?<br><br><div class="gmail_quote">On Thu, Feb 21, 2013 at 4:36 PM, Leo White <span dir="ltr"><<a href="mailto:lpw25@cam.ac.uk" target="_blank">lpw25@cam.ac.uk</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Since about a year now, there has been a intermittent discussion ongoing on the idea of introducing "namespaces" to the OCaml language[...], but there have been fairly different ideas about how to best solve those problems, or even what "namespace" means.<br>


</blockquote>
<br>
As I see it what we *need* from namespaces is fairly simple:<br>
<br>
 Developers must be able to give their components long (hierarchical)  names without changing the component's filename.<br>
<br>
This allows components with the same filename to coexist within the search path. It also allows these components to be grouped together without packing them into a single module.<br>
<br>
Any other features, such as allowing users to use multiple versions of a component or automatically assigning long names to components based on their position within the filesystem should be considered superfluous and unnecessary for an initial implementation.<br>


<br>
<br>
In practical terms, what we need (based on Fabrice's "namespaces" branch of the OCaml source tree) is to be able to start a file with a syntax like:<br>
<br>
 in Core.Std<br>
<br>
This path is then included in the .cmi file and other compiled files. Then, when a user writes "Core.Std.List", lookup proceeds as follows:<br>
<br>
1. Look for a module called Core in the current local environment. <br>
2. Look for a file "core.cmi" in the search path that is not attached to a   namespace.<br>
<br>
3. Look for a file "std.cmi" in the search path that is attached to the   "Core" namespace.<br>
<br>
4. Look for a file "list.cmi" in the search path that is attached to the   "Core.Std" namespace.<br>
<br>
This lookup scheme could be simplified by, as Gabriel has suggested, using a different separator for namespaces (e.g. Core#Std#List). Personally, I don't have a strong opinion either way. A new separator is less ambiguous, but it is one more piece of syntax for beginners to learn.<br>


<br>
<br>
Other simple features that would be useful include:<br>
<br>
- Opening namespaces  ("open Core.Std")<br>
<br>
- Aliasing namespaces  ("open Core.Std as CS")<br>
<br>
- Attaching a component to multiple namespaces ("in Core.Std and  Core.Containers")<br>
<br>
- A command-line option alternative to the "in" syntax.<br>
<br>
- A command-line option to pre-open namespaces.<br>
<br>
Regards,<br>
<br>
Leo<br>
<br>
</blockquote></div><br>