[ocaml-platform] on the need and design of OCaml namespaces

Anil Madhavapeddy anil at recoil.org
Fri Feb 22 11:41:10 GMT 2013


There's one scenario which absolutely requires the ability to explicitly open a particular namespace: camlp4 code generation.

Right now, several camlp4 extensions break because they use modules from the standard Pervasives library, and have no way to explicitly state that.  If Core.Std is opened, then compilation fails.  

The two workarounds are:
- hack the build system to pass -pp options to the camlp4 generator. Painful.
- have some facility to explicitly open 'Caml_std' or 'Core_std' locally, irrespective of the current module environment.

I believe namespaces addresses the latter workaround.

-anil

On 22 Feb 2013, at 10:39, Daniel Bünzli <daniel.buenzli at erratique.ch> wrote:

> This may be a silly suggestion as I'm not sure I'm really convinced by the absolute *need* for namespaces (I'd rather not have an additional concept in a language that I already find sufficiently complex to my taste).
> 
> However it strikes me that while it seems to be agreed upon that a simple mechanism like `-pack` solves the problem albeit not in a technically satisfying way, the worked out proposal seems to skyrocket into complexity. The best way to avoid bureaucracy/complexity is not to introduce the tools to be able to manage it...
> 
> So if the problem is `-pack` is not good enough because it produces a huge `cmo`, why not just try to find a corresponding concept workable with `cm[x]a` ?  
> 
> Here's a proposal --- from a user point of view, I'll let the compiler hackers comment on how/if this could be workable.
> 
> Introduce `cmia` files that bundles the `cmi`'s of a `cm[x]a` with the corresponding file name. The name of the `cmia` file (and hence of the `cm[x]a` file) defines your toplevel module name à la `-pack`. Make it even be backward compatible in the sense that if there's no `cmia` for a `cm[x]a` the modules are accessed as before. Now you have a kind of `-pack` that work with `cm[x]a`.
> 
> Best,
> 
> Daniel
> 
> P.S. flat vs hierarchical, I'd also rather go flat.
> 
> 
> _______________________________________________
> Platform mailing list
> Platform at lists.ocaml.org
> http://lists.ocaml.org/listinfo/platform



More information about the Platform mailing list