Hello,
Back to a problem which I have always found annoying in OCaml.
I hoped the version 4.0 would solve it, but it seams nothing
changed..
While developping a project, It's interesting to use the
interpreter (for test, debugging) AND the compiler (to have program run faster
when everything goes wright).
Now, when the project is divided in several modules,
each module being a structure written in a .ml file (with possibly a signature
in a .mli file), you can't simply use the interpreter and the compiler on the
same files.
The interpreter loads the modules with their names (say M),
and you can refer to its identifiers with M.foo, in the standard
way.
The compiler adds one level of "modularity", as it
encapsulates the contents of the file with "module M ...end". So now its
identiifers should be referenced as M.M.foo !!
I found two possible work-arounds to this :
- comment out all my top-level decarations of
module before compiling the files
needs
to be undone and redone every time I want to reuse the interpreter for testing
after a change in the the program
- copy all the files in one file and compile this
unique file
this
process is easy to automatize, but I loose the advantages of separate
compilation
Can somebody explain the rationale behind this
behavior. Or, if this is only for historical and compatibility
reasons, could it be possible to have an option "-please_don't_encapsulate" (or
something shorter...) for the compiler ?
Alain Coste