Hello,

2010/5/21 Hans Ole Rafaelsen <hrafaelsen@gmail.com>
When packing a set of modules into a top module using -pack, is there a way to have some of the modules private to the package?

If I have the modules Helper, Foo and Bar. Helper provides helper functions used by Foo and Bar. When I'm packing them into a top mudule P, I do not want to expose the functions of Helper to users of P.

Is there some way to achieve this?  If not, do anyone know of other ways for packing libraries and keeping some of the modules private to the library?

Just write yourself a file p.mli without your private modules:
=== p.mli ===
module Foo : ...
module Bar : ...
==========
Of course, you can not refer to signatures of modules Foo and Bar in p.mli. Thus you have to duplicate them or, better, to write them somewhere outside the package.

From a compilation point of view, be sure to generate p.cmi by using p.mli before generating the pack files p.cm[ox].

We use such a trick in the Frama-C tool (http://frama-c.com) for providing (usually empty) interfaces of its plug-ins. But I do not recommend you to read the Frama-C Makefiles for looking at the corresponding compilation lines (except if you are **very** motivated).

Hope this helps,
Julien