> > module type IHelloWorld
=
> > sig
> > type helloWorldType = Hello
| World
> > val hello : unit -> helloWorldType
> > end
> >
> > module Wrapper (X: IHelloWorld) : IHelloWorld
=
> > struct
> > type helloWorldType = X.helloWorldType
> > let hello = X.hello
> > end
>
> You have to explicitely define Hello and World in the wrapper. Try
this :
>
> module Wrapper(X:IHelloWorld): IHelloWorld =
> struct
> type helloWorldType = X.helloWorldType = Hello | Word
> let hello = X.hello
> end
Alternatively, you have defined too much In IHelloWorld
(depends on what you wanted to do in the first place).
Then try this:
module type IHelloWorld =
sig
type helloWorldType (*
now abstract *)
val hello : unit ->
helloWorldType
end
module Wrapper (X: IHelloWorld)
:
(IHelloWorld with type
helloWorldType = X.helloWorldType) =
struct
type helloWorldType =
X.helloWorldType
let hello = X.hello
end
...
Sebastian Egner.