Browse thread
Writing Identity Functors (or Wrapper modules) in OCAML
-
Merijn de Jonge
-
Julien Signoles
- Sebastian Egner
- Jean-Christophe Filliatre
-
Julien Signoles
[
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: | Sebastian Egner <sebastian.egner@p...> |
| Subject: | Re: [Caml-list] Writing Identity Functors (or Wrapper modules) inOCAML |
> > 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.