Browse thread
Partially hiding modules in packages
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | blue storm <bluestorm.dylc@g...> |
| Subject: | Re: [Caml-list] Partially hiding modules in packages |
The problem with your packages.tgz example is that you use "module
type Foo = .." in the .mli. This gives the signature of a module type,
that is, it refers to a _module type_ defined in the implementation
file.
What you want to do here is to give the signature of a _module_, not a
module types, so here is the correct syntax :
module Foo : sig
type foo_t
val initial : foo_t
val show : foo_t -> string
end
Regarding your original problem, I've had the same needs and came up
with a slightly different solution : in order to avoid the additional
indirection level related to -pack (Foobar.Foo), is used a flattened
representation by adding a "foobar.ml" file containing only :
include Foo
(and possibly include of other modules in the package). Then the
foobarl.mli is :
type foo_t
val initial : foo_t
val show : foo_t -> string
And values can be referred with Foobar.foo, instead of Foobar.Foo.foo.
Of course this is only useful if you don't want the user to see the
internal module hierarchy, wich may not be what you had in mind.