Having used haskell, I'm getting to grips with the core ocaml
language, but am somewhat confused by modules.
If I compile a simple file, X.ml:
| module StringMap = Map.Make (String)
|
| type info = int list StringMap.t
|
| type named_values = {
| details : info
| }
|
| ..... other stuff ....
then ocamlc will automatically build a x.cmi file that exports
everything. I can use this from another file Y.ml:
| let x = X.StringMap.empty;;
|
| let y = { X.details=X.StringMap.add "xxx" [1;2;3] x }
although the X.StringMap.fn syntax seems a bit unwieldy.
If I want to restrict what gets exported, I have to
write an x.mli file. Whilst I've written mli files for simple
types and functions, I'm at a loss as how to write the contents
of the mli file that corresponds to the one automatically generated
above (specifically the StringMap bit).
A pointer would be much appreciated, either how to write the .mli
file, or a generally better way of doing this stuff.
Thanks,
Tim